Where do unhandled exceptions in event handlers go?
-
When an exception in an event handler is not handled, where does it bubble up to? It's not bubbling up to anywhere in my Windows Form app. The exception itself gets reported in the debugger output, and the event handler terminates at the offending line of code, and my program runs happily along its way - no "unhandled exception" message is displayed anywhere. The code doesn't even stop when running hosted/in the debugger. If I wasn't watching the output window, I would have no idea the exception is being thrown. Is this expected? I can handle this, I guess, by carefully wrapping all the code in my event handler with Try/Catch. However, I wanted some exceptions to bubble up and be handled in my app - specifically, those *I* throw. But they go nowhere. And I'm realizing... where would they emerge, anyway?
-
When an exception in an event handler is not handled, where does it bubble up to? It's not bubbling up to anywhere in my Windows Form app. The exception itself gets reported in the debugger output, and the event handler terminates at the offending line of code, and my program runs happily along its way - no "unhandled exception" message is displayed anywhere. The code doesn't even stop when running hosted/in the debugger. If I wasn't watching the output window, I would have no idea the exception is being thrown. Is this expected? I can handle this, I guess, by carefully wrapping all the code in my event handler with Try/Catch. However, I wanted some exceptions to bubble up and be handled in my app - specifically, those *I* throw. But they go nowhere. And I'm realizing... where would they emerge, anyway?
I have had weirdness like this before when I attached the debugger to running code and there were PDB files from a different build (build and deploy on Monday, lose PDB files on Tuesday, add enough code [spaces] to change the file slightly, rebuild and try to attach to the process on Wednesday). The PDB are similar enough to allow the debugger to attach, but stepping through causes very odd behavior. Of course the solution for this is to either get the original PDB files, or rebuild the assembly and debug with the new ones. I have also seen cases where the output window shows a slew of "MissingMemberExceptions" or other system looking exceptions that happen in the background and doesnt appear to affect my program's execution. I assume these are thrown by dependant or underlying assemblies and handled down there, before they bubble up to the calling application. The output window may just be blindly dumping any exception data from the CLR. What kind of exception / details are in the window? Can you cut/paste that and a sample of the code that is executed right before and after the exception shows in the output window?