c# - Windows 窗体应用程序中未处理的异常

标签 c# winforms exception unhandled

我有一个 Windows 窗体应用程序。它使用 Assembly.LoadFile 加载扩展名为 .Plugin.dll 的程序集。这些“插件”之一调用另一个程序集 dll。该 dll 最终抛出 ValidationException 异常。抛出异常的方法在继承自 IDataErrorInfo 的类中。此类是包含在 Linq to SQL 类 (.dbml) 中的类。在“插件”中,我调用 DataContext.SubmitChanges。这被包裹在一个 try/catch block 中。这导致我的业务逻辑在提交到 OnValidate 覆盖中的数据库之前验证数据。我看到的结果是,在抛出 ValidationExeption 之后,调试器在 OnValidate 方法的底部停止,表明发生了未处理的异常。如果我继续运行该应用程序,我的 catch block 就会被执行。这正是我最初想要的,但为什么当它真正被处理时我会得到一个未处理的异常?

最佳答案

我 99% 确定导致此问题的“真实”异常确实未处理 - 这是调试器首先告诉您的,他通常是正确的。

当您之后继续在 VS 中运行该应用程序时,实际上并不会在您从调试器中执行您的 exe 时发生什么。事实上,调试器首先会通知您未处理的异常,然后继续执行一些挂起的逻辑(如果有的话)(这就是您看到 ValidationException 错误的原因)。但是未处理的异常仍然存在。我不完全了解这种行为的细节和原因,但我多次注意到这一点。

您必须在识别未处理的异常抛出的准确位置捕获准确的错误。 也许发布您的代码示例会有所帮助。

关于c# - Windows 窗体应用程序中未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100791/

相关文章:

c# - LINQ xml 查找节点返回 null

c# - 找不到 System.Windows 程序集

c# - datagridview 不允许用户删除行

c# - 返回 Tuple<bool, string> 而不是抛出 exception()?

iOS 异常回溯 - 应用程序条目未符号化

c++ - 你使用 C++ 异常做什么?

c# - 使用 C# 图形类调整图像大小时出现质量问题

c# - 使用 ConfigurationManager 加载 System.ServiceModel 配置部分

c# - 如何理解在运行时 : WinForms, WinService 或 ASP.NET 中执行我的 dll 的上下文?

.net - 修改 PropertyGrid 中的结构属性