例外被忽略了

时间:2012-12-15 09:31:37

标签: c# winforms exception

问题

当我们的应用程序抛出异常时,没有任何反应。

应用程序反应就像一个空的try catch正在某个更高级别捕获异常并忽略该异常....

当简单抛出像这样throw new Exception("BOOM");的异常时,什么可以捕获并忽略异常??? 我无法在我的代码或更高级别的try-catch中找到任何空的try-catch,其中异常将会发生?

我在DragDrop事件处理程序中抛出异常。

问题

  • 这种行为有什么可能的原因吗?
  • 有没有办法确切地查看异常消失的位置?我试着查看调用堆栈,踩到反汇编代码,在其他级别捕获异常,...

1 个答案:

答案 0 :(得分:1)

  

在DragDrop事件中抛出异常

这是必不可少的信息,如果您发布了一个片段就很明显了。拖放事件处理程序是特殊的。它们中引发的任何异常都被吞没而没有任何诊断。这背后的可能哲学是它们可能会失败,因为它们处理由另一个程序产生的数据。并且不应该允许产生这样的错误数据的错误程序使您崩溃。

如果需要调试代码,请使用Debug + Exceptions,勾选CLR异常的Thrown复选框。抛出异常时,调试器现在将停止。

如果您希望用户知道任何异常,那么您需要使用try / catch来捕获异常,然后才能吞下它。存在轻微的风险,即其他程序中的任何错误都会由您解释。