See here
http://msdn.microsoft.com/en-us/library/ms733025.aspx[
^] where it states all exceptions are logged if trace level is set to error.
The only way I know of to handle your 'override catch problem' in code is to rethrow the error from the catch so that your global error handler can catch it.
However if you attach a debugger, you can set the debugger to break when any exception is thrown.
In VS2010, this option is located in Debug->Exceptions (ctrl-alt-e)
Edit:
kia.sos wrote:
In other words, consider try ... catch ... finally structure similar to other
application events and override catch section, run our custom code next run
catch section code.
AFAIK, there is no way to run your catch first since exception propagate via bubbling not tunneling.
You could try coding your own trace listener and 'handle' the exception when the tracer receives it. However, I do not know if the tracer or the user's catch statement would be the first to be executed.