[英]Unhandled exception in C# application does it crash the app?
在我的C#应用程序中,当我在Visual Studio中以调试模式运行它时,它会断言我有一个未处理的异常(它是一个System.ArgumentException)。 但是当我在发布模式下运行它时,应用程序不会崩溃。
我的问题是如果我有未处理的异常会导致什么后果? 当用户遇到方案时,应用程序是否崩溃?
C#应用程序中未处理的异常会导致应用程序崩溃吗?
如果你的意思是“未处理”,意思是“我未经处理”那么它就不一定了。 让我们说你的方法从静态void Main(在主线程中)开始,它抛出未处理的异常。 这会导致应用程序崩溃。 但另一方面,如果你在一个新的任务(方法)中异步运行相同的方法,它将崩溃执行此任务的线程是,但不是你的应用程序(此异常将由任务管理器自动处理)。
PS因此任何未处理的异常都会终止程序流程。
如果异常真的未处理(它在所有图层中冒泡),则会导致应用程序崩溃。 然而正如其他人之前已经提到的那样,当异常被抛到某些代码行上并且抓住任何其他不错的点时,VS可能会显示错误,然后将继续在catch-handler中进行调试。
考虑以下代码:
void Main(string[] args)
{
try {
DoSomething();
} catch {
/* error-handling happens here */
}
}
void DoSomething {
// this exception will bubble until Main and is handled there --> no crash
throw new ArgumentException();
}
但是,如果你的Main
-method(或DoSomething
)没有任何try-catch
-block,那么应用程序也会通过,但因此不会处理它会导致app崩溃。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.