I have a child form that is throwing an ApplicationException in the Load event handler (intentionally for testing purposes). The parent form wraps the ChildForm.Show() method in a Try...Catch ex As Exception block. The catch block simply displays a message and closes the child form. All works as expected when debugged in visual studio 2008 (.net 3.5 sp1). However, when I run it outside of visual studio, the Catch block seems to get missed and an unhandled exception occurs. Any idea why that is?
Thank you.
Example Code:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f2 As Form2
f2 = New Form2
Try
MessageBox.Show("Opening form 2")
f2.ShowDialog()
Catch ex As Exception
f2.Close()
MessageBox.Show("Form 2 closed.")
End Try
End Sub
End Class
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Throw New ApplicationException("Test Form_Load")
End Sub
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
End Class
Stack Trace:
System.ApplicationException:
Test Form_Load at WindowsApplication1.Form2.Form2_Load(Object sender, EventArgs e)
in UnhandledExceptionTest2WindowsApplication1Form2.vb
System.Windows.Forms.Form.OnLoad(EventArgs e)
System.Windows.Forms.Form.OnCreateControl()
System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
System.Windows.Forms.Control.CreateControl()
System.Windows.Forms.Control.WmShowWindow(Message& m) at
System.Windows.Forms.Control.WndProc(Message&> m) at
System.Windows.Forms.ScrollableControl.WndProc(Message&> m) at
System.Windows.Forms.ContainerControl.WndProc(Message&> m) at
System.Windows.Forms.Form.WmShowWindow(Message&> m) at
System.Windows.Forms.Form.WndProc(Message&> m) at
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&> m) at
System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&> m) at
System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr
lparam)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…