You are doing something wrong, but look at this info i get it from Microsoft Enterprise library
Using Exception Handlers The Exception Handling Application Block is designed to support the typical code contained in catch statements in application components. Instead of repeating this code (such as logging exception information) throughout identical catch blocks in an application component, the application block allows developers to encapsulate this logic as reusable exception handlers. Exception handlers are .NET classes that encapsulate exception handling logic and implement the Exception Handling Application Block interface named IExceptionHandler. The Exception Handling Application Block includes four exception handlers:
Wrap handler. This exception handler wraps one exception around another.
Replace handler. This exception handler replaces one exception with another.
Logging handler. This exception handler formats exception information, such as the message and the stack trace. Then the logging handler gives this information to the Enterprise Library Logging Application Block so that it can be published.
Fault Contract Exception Handler. This exception handler is designed for use at Windows Communication Foundation (WCF) service boundaries, and generates a new Fault Contract from the exception.
Very important, the main thread must catch all exception also if you have another process, for example read from device and make the localization of the error message in main thread(UI).
I recommended you to use Microsft Enterprise library.