C#:如果未捕获异常会发生什么

Cra*_*ton 1 c# unhandled-exception

如果未捕获异常,C#程序中会发生什么.程序是否因运行时错误而"崩溃"?

Eri*_*ert 10

如果未捕获异常,C#程序中会发生什么.程序是否因运行时错误而"崩溃"?

也许.

也许不吧.

实现定义会发生什么.

例如,您可能会看到一个对话框,显示"存在未处理的异常,我看到您安装了Visual Studio.您是否要启动调试器并检查程序状态?"

您可能会看到一个对话框,显示"存在未处理的异常,您要向Microsoft报告吗?"

如果您已经在调试器中运行,调试器可能会做一些事情来引起您的注意.

允许运行时执行任何操作,包括询问您该怎么做.

请注意,运行时会知道在finally块运行之前是否会有catch块.您可以使用控制台应用轻松演示此功能.编写一个崩溃的应用程序,并在finally块中输出:

Unhandled Exception: System.Exception: Exception of type 
'System.Exception' was thrown at 
ConsoleApplication1.Program.Main(String[] args) 
finally running now
Run Code Online (Sandbox Code Playgroud)

走着瞧吧?运行时报告错误,为调试器提供运行机会,或运行finally块之前将问题报告给Microsoft或其他任何内容.如果他们运行的话.他们可能不会. 任何事情都可能发生.用户可以决定销毁进程,或者启动调试器并修复异常等等.

如果您真的想了解C#中的异常如何工作,您应该阅读:

http://blogs.msdn.com/b/cbrumme/archive/2003/10/01/51524.aspx