在我的C#应用程序中,当我在Visual Studio的调试模式下运行它时,它会中断并显示未处理的异常(这是System.ArgumentException)。但是当我在发布模式下运行它时,应用程序不会崩溃。
我的问题是,如果我有未处理的异常,会有什么后果?当用户遇到这种情况时,应用程序是否会崩溃?
我的问题是,如果我有未处理的异常,会有什么后果?当用户遇到这种情况时,应用程序是否会崩溃?
C#应用程序中的未处理异常会导致应用程序崩溃吗?
如果你的意思是“我没有处理”,那么不一定会导致应用程序崩溃。假设你的方法从静态void Main(在主线程中)开始,并抛出未处理的异常,这将导致应用程序崩溃。但是,另一方面,如果你在新的Task(Method)中异步运行相同的方法,则它将崩溃执行此Task的线程,但不会崩溃整个应用程序(任务管理器会自动处理此异常)。
P.S. 因此,任何未处理的异常都会终止程序流程。
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
方法(或DoSomething
方法)中没有任何try-catch
块,应用程序也会冒泡传递,但由于未处理,它将导致应用程序崩溃。