I don't like it as a general approach. You will get code bloat from lots more connect(...) statements, and also you have to connect them TO something. So now all(?) of your objects need to be able to receive error signal as well. Additionally your methods that 'throw' still have to satisfy any guarantee on return values. e.g. all code like this has to be refactored
Qt Code:
  1. X getX(Key k)
  2. {
  3. Iter it = find(k);
  4. if (it == end)
  5. throw exception("oops");
  6.  
  7. return *it; // oh dear, we cant return if exception is caught and signal emitted instead
  8. // so we have to make everything return a bool...
  9. }
To copy to clipboard, switch view to plain text mode 

You only have to reimplement notify if your code throws whilst inside event handlers (iirc).


How do you notify errors from Qt objects?
Don't know what that means. In your suggestion you are using signals slots. So use signals/slots for error signalling and receiving.