Why is my Catch block only running while Debugging in Visual Studio?

This is because the standard exception handling for a Windows Forms application behaves differently when the Visual Studio debugger is attached - normally the exception handler built into the Application. Run method catches unhandled exceptions so that it can do things like show the following dialog: If it allowed the exception to be thrown outside of the Application. Run method then it would prevent the application from continuing if the user presses "continue" (as the catch is outside of the message pump) When debugging however this is disabled, presumably so that the debugger will jump straight into debugging mode on an unhandled exception rather than the above dialog being shown If you wish to handle unhandled exceptions in your Windows Forms application then you should handle the Application.

ThreadException Event Alternatively you can alter this behaviour with the Application. SetUnhandledExceptionMode Method You are by no means alone in being confused by this: Is try/catch around whole C# program possible? Exception handling problem in release mode (this question is misleadingly named - this isn't related to the Release / Debug build setting) C# Exceptions only caught when debugging?

This is because the standard exception handling for a Windows Forms application behaves differently when the Visual Studio debugger is attached - normally the exception handler built into the Application. Run method catches unhandled exceptions so that it can do things like show the following dialog: If it allowed the exception to be thrown outside of the Application. Run method then it would prevent the application from continuing if the user presses "continue" (as the catch is outside of the message pump).

When debugging however this is disabled, presumably so that the debugger will jump straight into debugging mode on an unhandled exception rather than the above dialog being shown. If you wish to handle unhandled exceptions in your Windows Forms application then you should handle the Application. ThreadException Event.

Alternatively you can alter this behaviour with the Application. SetUnhandledExceptionMode Method. You are by no means alone in being confused by this: Is try/catch around whole C# program possible?

Exception handling problem in release mode (this question is misleadingly named - this isn't related to the Release / Debug build setting) C# Exceptions only caught when debugging?

Because in RELEASE mode at the moment the message box have to be shown yuo're appication is going to be "dead" and you can not stop it by showing MessageBox. In DEBUG mode VS cares about that and breaks on the line that throws an exception. Regards.

7 You are completely wrong. – SLaks Jul 18 at 14:19 1 Everything. No part of your answer is true.

– SLaks Jul 18 at 14:21 2 I am aware of that. You're still wrong. – SLaks Jul 18 at 14:25 2 1) He isn't running Release mode.2) catch blocks work fine in release mode 3) VS isn't breaking in debug mode; he's seeing the MessageBox 4) The actual problem is the default unhandled exception handler, which doesn't run when the debugger is attached.

– SLaks Jul 18 at 14:29 1 I know. He isn't running Release binaries. That doesn't make your answer any less wrong.

– SLaks Jul 18 at 14:36.

I can't see why this is happening but try rebuilding the solution, if in doubt I always do that. It may or may not fix the problem and you probably have already tried but if you haven't it may fix it for you.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions