2012-02-01 64 views
2

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

+4

什么是堆栈跟踪说异常源自何处?这可能有帮助。 – 2012-02-01 18:02:56

回答

0

我99%确定你的“真正的”异常导致这个确实没有处理 - 这是调试器在第一时间告诉你的,而且他一般是正确的。

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

您必须在确定出现unhandledexception的确切位置处发现精确错误。 也许发布你的代码示例会有所帮助。

0

首先,是同一AppDomain中的插件吗?其次,它听起来像是你有你的调试器来“抛出异常时中断”而不是“当异常是用户未处理时中断”。

在VS.NET,进入调试 - >例外...

展开“通用语言运行时例外”节点,看看有没有被勾选。

相关问题