I have a strange problem, will appreciate if anyone can help.
I have the following function:
void Foo()
{
MessageBox.Show("here");
throw new Exception();
}
I call it in the following two cases (separately - not at the same time):
private void Form2_Load(object sender, EventArgs e)
{
// Case 1
Foo();
}
public Form2()
{
InitializeComponent();
// Case 2
Foo();
}
I can see the messagebox (I receive message "here") in both case but:
[Case 1] The application doesn't break on the exception (in Debug mode) and remains silent!
[Case 2] Application correctly breaks and I can see that there is an exception in the Foo().
Any idea why?
My guess is that the call to the constructor looks a bit like this:
Form2 form = new Form2();
Application.Run(form);
The crucial part being that you are calling the constuctor of Form2
directly wheras it is the application class / message pump that is calling Form2_Load
.
The final piece of the puzzle is that exceptions thrown inside a Win32 message pump are handled differently (to start with see the Application.SetUnhandledExceptionMode Method ) - what you may also find confusing is that exceptions are also handled differently based on whether the project is build in the Debug configuration or not.
You might have a handler for the Application.UnhandledException Event - this would explain the behaviour you have described.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With