I don’t know if this is OK or not, but at the end of every method I place:
Exception err
commonOS.doHandleExceptionWAD(err, CurrentMethodName, self.Title)
This calls a generic method inside a module that I use to display an error inside a generic window. This seems to trap all errors and allows me to place a Break command inside the method for debugging purposes.
When users report errors they always send me a screen dump. This allows me to see exactly what the error is and what method it occurred in. Potentially I can write this to a debug file or web database too.
When called from a non Window/Dialog, I leave out the self.Title.
As a general approach I only trap exceptions that I expect and can handle. The rest I leave to the framework to deal with. At the application level I trap and log unexpected errors before letting them bubble up.