c# - 捕获另一个表单抛出的异常

标签 c# winforms exception exception-handling

我正在尝试这样做:

我正在创建另一个表单,在它的 FormClosed 方法中抛出一个异常,该异常应该被主表单捕获。

主窗体:

try
    {
        frmOptions frm  = new frmOptions();
        frm.ShowDialog();                        
    }
catch(Exception)
    {
        MessageBox.Show("Exception caught.");
    }

frm选项:

private void frmOptions_FormClosed(object sender, FormClosedEventArgs e)
{
    throw new Exception();
}

调试器在出现异常时停止并显示以下消息:

Exception was unhandled by user code

为什么?我在创建它的对象的所有者中捕获异常。有人有想法吗?

最佳答案

我认为这行不通,新表单没有在上面代码的上下文中运行,它只是由它启动。如果您检查堆栈跟踪以查找抛出的异常,您不应该在其中看到上面的代码,因此它无法捕获异常。

更新:我刚刚创建了一个测试项目并进行了尝试。堆栈跟踪对原始表单一无所知。如果您想捕获未处理的异常,您可能需要查看这个问题 Unhandled Exception Handler in .NET 1.1

关于c# - 捕获另一个表单抛出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8381042/

相关文章:

java - 如何在 java 中从 jar 加载嵌入字体作为 InputStream?

c# - 表单未正确加载

c# - 参数 1 : cannot convert from 'System.Collections.Generic.List' to 'System.Collections.Generic.List'

c# - 在方法中使用 lambda 并匹配列表

c# - 将 StringBuilder 写入 Stream

vb.net - 检查表单是否在所有屏幕的范围内

c# - Control.ControlCollection 问题

java - 如何仅使用 try-catch-finally 构造重写具有两个资源的 try-with-resources?

java - 我有时会出错,有时不会?

c# - C# 中具有多维键的哈希表