通过Visiual Studio调试理解异常
如果您花了任何时间编写代码,很可能您不得不处理异常处理。在Visual Studio中,当异常被抛出或最终未被处理时,调试器可以帮助您通过中断来调试这些异常,就像在遇到断点时中断一样。下面我们将讨论异常的不同分类,以及如何配置调试器何时为这些异常中断。
异常分类
我们将从调试器中异常的分类类型开始。调试器按以下方式对异常进行分类:
First Chance Exceptions:
当应用程序中首次抛出异常时,这被归类为“First Chance”异常。此时,调试器不知道应用程序是否会捕获(处理)异常。所有异常都以第一次机会异常开始。
- 每次引发异常时都会通知调试器。您可以在输出窗口和IntelliTrace中看到这些通知。
- 您可以告诉调试器要中断的首次机会异常,就像启用断点一样。
- 一旦由于首次出现异常而中断,可以通过单步执行或按“继续”继续调试。当您继续时,您的代码有机会处理此异常,如果没有,则该异常现在属于下面列出的分类之一。
User-unhandled Exceptions:
当用户代码中没有捕获(处理)第一次机会异常,并且在调用堆栈的“外部代码”中捕获时,这被归类为“用户未处理”异常。此分类仅适用于仅启用我的代码调试托管或JavaScript应用程序时。
- 默认情况下,调试器将为所有用户未处理的异常而中断。
- 一旦由于用户未处理的异常而中断,可以通过单步执行或按“继续”继续调试。异常可以在调用堆栈的“外部代码”中的某个位置处理,如果不是,则它将成为未处理的异常。
- 您可以更改默认设置,但在大多数情况下,您可能不需要更改此设置。大多数框架,比如ASP.NET,都实现了全局异常处理程序,这样应用程序就不会崩溃,但是异常并没有得到正确的处理。调试器为用户未处理的异常提供中断功能,以便在这些情况下通知您。
Unhandled Exceptions:
当应用程序未捕获(处理)第一次机会异常并到达系统默认处理程序时,这被归类为“未处理”异常。
- 上一篇: 仅通过转储来排除内存泄漏
- 下一篇: 使用Java中的InputStream读取文件数据