C# C:如果没有捕获到异常,会发生什么

C# C:如果没有捕获到异常,会发生什么,c#,unhandled-exception,C#,Unhandled Exception,如果没有捕获异常,C程序会发生什么。程序是否因运行时错误而“崩溃”?是。是。试试看!根据错误,它通常会捕获。现在,对于所有的异常都应该被捕获,如果它像一个[i],如果i太大,它可能会抛出一个错误,但是你知道我应该被限制在范围内,例如,在for循环中,你不会捕获那个异常 但是,如果您使用的是来自用户(比如GUI)的数据,您几乎总是会对其进行验证。试试看!根据错误,它通常会捕获。现在,对于所有的异常都应该被捕获,如果它像一个[i],如果i太大,它可能会抛出一个错误,但是你知道我应该被限制在范围内,例

如果没有捕获异常,C程序会发生什么。程序是否因运行时错误而“崩溃”?

是。

是。

试试看!根据错误,它通常会捕获。现在,对于所有的异常都应该被捕获,如果它像一个[i],如果i太大,它可能会抛出一个错误,但是你知道我应该被限制在范围内,例如,在for循环中,你不会捕获那个异常


但是,如果您使用的是来自用户(比如GUI)的数据,您几乎总是会对其进行验证。

试试看!根据错误,它通常会捕获。现在,对于所有的异常都应该被捕获,如果它像一个[i],如果i太大,它可能会抛出一个错误,但是你知道我应该被限制在范围内,例如,在for循环中,你不会捕获那个异常


但是,如果您使用的是来自用户(比如GUI)的数据,您几乎总是会对其进行验证。

发生了一些异常情况,而您的程序不知道如何处理它,因此它必须在该点停止执行并崩溃。崩溃后会有一些代码被执行,比如finally blocks,但基本上你的代码已经结束了


最好的办法是记录这些事件,尽可能多地说明崩溃时系统/程序的状态。是记录错误的更可靠的自动方法之一。

发生了一些异常情况,而您的程序不知道如何处理它,因此它必须在该点停止执行并崩溃。崩溃后会有一些代码被执行,比如finally blocks,但基本上你的代码已经结束了

最好的办法是记录这些事件,尽可能多地说明崩溃时系统/程序的状态。这是一种更强大的自动记录错误的方法。

自己试试吧

class Program
{
    static void Main(string[] args)
    {
        int[] arr = new int[1];
        arr[5] = 6;   //throws an exception; what kind?
    }
}
在调试模式下编译并运行它,以便快速回答您的问题

或者只是写一些程序。代码迟早会抛出异常;它发生在我们所有人身上,通常比我们所能计数的次数还要多。在控制台或WinForms应用程序中,未经处理的异常通常会使程序崩溃;在ASP.NET中,它将生成一个错误页面,但不会使整个网站崩溃。您还可以编写自定义代码,指定在发生未经处理的异常时应执行的操作,以便应用程序正常地失败。

请自己尝试

class Program
{
    static void Main(string[] args)
    {
        int[] arr = new int[1];
        arr[5] = 6;   //throws an exception; what kind?
    }
}
在调试模式下编译并运行它,以便快速回答您的问题

或者只是写一些程序。代码迟早会抛出异常;它发生在我们所有人身上,通常比我们所能计数的次数还要多。在控制台或WinForms应用程序中,未经处理的异常通常会使程序崩溃;在ASP.NET中,它将生成一个错误页面,但不会使整个网站崩溃。您还可以编写自定义代码,指定在发生未经处理的异常时应执行的操作,以便应用程序正常地失败

如果没有捕获异常,C程序会发生什么。程序是否因运行时错误之类的原因“崩溃”

也许吧

也许不是

所发生的事情是由实现定义的

例如,您可能会看到一个对话框,其中显示存在未处理的异常,我看到您已经安装了Visual Studio。是否要启动调试器并检查程序状态

您可能会看到一个对话框,其中显示存在未处理的异常,是否要向Microsoft报告此情况

如果您已经在调试器中运行,调试器可能会做一些事情来引起您的注意

运行时可以做任何它想做的事情,包括询问您要做什么

请注意,运行时知道在finally块运行之前是否会有catch块。您可以通过控制台应用程序轻松演示这一点。编写一个崩溃的应用程序,并在finally块中输出:

Unhandled Exception: System.Exception: Exception of type 
'System.Exception' was thrown at 
ConsoleApplication1.Program.Main(String[] args) 
finally running now
看看会发生什么?在运行finally块之前,运行时会报告错误,给调试器一个运行的机会,或者将问题报告给Microsoft或其他任何人。如果他们跑的话。他们可能不会。任何事情都有可能发生。用户可以决定销毁进程,或者启动调试器并修复异常,或者其他任何操作

如果您真的想了解异常在C中是如何工作的,您应该阅读以下内容:

如果没有捕获异常,C程序会发生什么。程序是否因运行时错误之类的原因“崩溃”

也许吧

也许不是

所发生的事情是由实现定义的

例如,您可能会看到一个对话框,其中显示存在未处理的异常,我看到您已经安装了Visual Studio。是否要启动调试器并检查程序状态

您可能会看到一个对话框,其中显示有未处理的错误 例外情况,是否要将此报告给Microsoft

如果您已经在调试器中运行,调试器可能会做一些事情来引起您的注意

运行时可以做任何它想做的事情,包括询问您要做什么

请注意,运行时知道在finally块运行之前是否会有catch块。您可以通过控制台应用程序轻松演示这一点。编写一个崩溃的应用程序,并在finally块中输出:

Unhandled Exception: System.Exception: Exception of type 
'System.Exception' was thrown at 
ConsoleApplication1.Program.Main(String[] args) 
finally running now
看看会发生什么?在运行finally块之前,运行时会报告错误,给调试器一个运行的机会,或者将问题报告给Microsoft或其他任何人。如果他们跑的话。他们可能不会。任何事情都有可能发生。用户可以决定销毁进程,或者启动调试器并修复异常,或者其他任何操作

如果您真的想了解异常在C中是如何工作的,您应该阅读以下内容:


对最好使用未经处理的异常处理程序来记录这些事件。@Mitch:您是在谈论AppDomain.UnhandledException事件吗?将编程想象成一个乐高积木盒。把它翻过来,试着做点什么,看看它是如何工作的。你甚至不需要在VS中清理。最好使用未经处理的异常处理程序来记录这些事件。@Mitch:您是在谈论AppDomain.UnhandledException事件吗?将编程想象成一个乐高积木盒。把它翻过来,试着做点什么,看看它是如何工作的。你甚至不必在VS.1中清理克里斯归档博客的任何链接。老歌,但好东西,每一个+Chris归档博客的链接为1。老歌,但好东西,每一个!