繁体   English   中英

C#应用程序中未处理的异常会导致应用程序崩溃吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM