As far as I know, there are 3 events that are fired when unhandled exceptions happen within Windows Forms application: Windows.Forms.Application.ThreadException, AppDomain.CurrentDomain.UnhandledException and MyApplication.UnhandledException.

1. Do I need to handle (subscribe to) all these three events?
2. What is the difference between the last two events?
3. Where exactly should I put SetUnhandledExceptionMode statement? If it is placed in Sub MyApplication_Startup() or Sub New(), exception is thrown.