在我的C#应用程序中,当我在Visual Studio中以调试模式运行它时,它会断言我有一个未处理的异常(它是一个System.ArgumentException)。但是当我在发布模式下运行它时,应用程序不会崩溃。
我的问题是如果我有未处理的异常会导致什么后果?当用户遇到场景时,应用程序是否会崩溃?
答案 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
- 阻止,则应用程序也会通过,但因此无法处理应用程序崩溃。