2

问题

当我们的应用程序抛出异常时,什么也没有发生。

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

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

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

问题

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

1 回答 1

1

在 DragDrop 事件中引发异常

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

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

如果您希望用户知道任何异常,那么您需要使用 try/catch 在异常被吞下之前捕获它。另一个程序中的任何错误都成为您解释的小风险。

于 2012-12-15T10:25:05.820 回答