1
我有兩種形式。我的第一個表單上有一個按鈕,當按鈕被點擊時它應該加載第二個表單。第二種形式在其Load事件中引發異常。顯示第二種形式的代碼位於try-catch塊中。然而,這個try-catch塊沒有捕獲異常,當我單擊按鈕時,我得到一個「未處理的異常」窗口。代碼如下:無法從Form.Show中捕捉異常
public partial class FirstForm : Form
{
private void button_Click(object sender, EventArgs e)
{
try
{
// Showing this form will throw an exception
SecondForm form = new SecondForm();
form.Show();
}
catch (Exception ex)
{
// The exception is not caught here
MessageBox.Show(ex.ToString());
}
}
}
public partial class SecondForm : Form
{
// Throw an exception when this form is shown
private void form_Load(object sender, EventArgs e)
{
throw new Exception("something");
}
}
爲什麼在我的代碼中沒有發現異常?
[MSDN論壇上的分享](https://social.msdn.microsoft.com/Forums/vstudio/en-US/b8c82b79-47d4-42ab-abdb-ff71d67a0022/異常拋出功能於formload事件-IS-永不卡住通過-IDE?論壇= vsdebug)。該決議並不真實清楚,但可能會幫助 –
看看[這](http://stackoverflow.com/questions/3209706/why-the-form-load-cant-catch-exception)SO問題(最後回答)。 –
在發佈我的問題之前,我嘗試了這些解決方案。在我的構建設置中,「首選32位」選項已被取消選中。我在Windows 10上,並且回答說這個問題在Windows 8及更高版本中得到了解決,但我仍然遇到了問題。我看到的答案是關於異常在調試器運行時被默默吞下或者只是一個問題,但這不是我正在經歷的。我的異常冒出來,導致程序崩潰,所以它們不會被喚醒,但它們不允許我處理它們。 –