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

时间:2015-07-06 07:30:57

标签: c#

在我的C#应用​​程序中,当我在Visual Studio中以调试模式运行它时,它会断言我有一个未处理的异常(它是一个System.ArgumentException)。但是当我在发布模式下运行它时,应用程序不会崩溃。

我的问题是如果我有未处理的异常会导致什么后果?当用户遇到场景时,应用程序是否会崩溃?

2 个答案:

答案 0 :(得分:1)

  

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

如果您的意思是未经处理的'从某种意义上来说,我未能做到这一点。那不一定。让我们说你的方法从静态void Main(在主线程中)开始,它抛出未处理的异常。这会导致应用程序崩溃。但另一方面,如果在新的任务(方法)中异步运行相同的方法,它会使执行此任务的线程崩溃,但不会使您的应用程序崩溃(此异常将由任务管理器自动处理)

P.S。 所以任何未处理的异常都会终止程序流。

答案 1 :(得分:0)

如果异常真的未处理(它会在所有图层中冒泡),则会导致应用程序崩溃。然而正如其他人之前已经提到的那样,当异常被抛到某些代码行上并且抓住任何其他不错的点时,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();
}

但是,如果您的try-catch - 方法(或Main内)中没有任何DoSomething - 阻止,则应用程序也会通过,但因此无法处理应用程序崩溃。