Windows窗体应用程序中出现未处理的异常

本文关键字:未处理 异常 窗体 应用程序 Windows | 更新日期: 2023-09-27 18:22:04

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

Windows窗体应用程序中出现未处理的异常

我99%确信您的"真实"异常确实没有得到处理-这是调试器首先告诉您的,他通常是对的

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

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

首先,插件是否在同一个AppDomain中?

其次,这听起来像是让调试器"在抛出异常时中断",而不是"在用户未处理异常时中断。"。

在VS.NET中,转到调试-->异常。。。

展开"公共语言运行时异常"节点,查看是否有勾选。