Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制台应用程序中的非终止全局异常处理程序_C#_Exception Handling_Console - Fatal编程技术网

C# 控制台应用程序中的非终止全局异常处理程序

C# 控制台应用程序中的非终止全局异常处理程序,c#,exception-handling,console,C#,Exception Handling,Console,我有一个用C代码编写的控制台应用程序。让我们假设它是最简单的应用程序,就像Hello World示例: class Program { static void Main(string[] args) { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; int zero = 0; int i =

我有一个用C代码编写的控制台应用程序。让我们假设它是最简单的应用程序,就像Hello World示例:

class Program
{
    static void Main(string[] args)
    {
        AppDomain.CurrentDomain.UnhandledException += 
              CurrentDomain_UnhandledException;
        int zero = 0;
        int i = 10 / zero;
    }

    static void CurrentDomain_UnhandledException(
                  object sender, UnhandledExceptionEventArgs e)
    {
        Console.WriteLine("exception");
    }
}
但是,我希望在全局异常处理程序中处理
DevideByZero
异常,但不通过
Environment.Exit()
退出应用程序

有可能吗?怎么做

注:

我已经看过这些问题了,但它们都已经结束了。一次又一次地引发异常


我想你可以通过使用
try catch
块来解决这个问题,比如:-

  try { 
     int zero = 0; 
     int i = 10 / zero; 
     } 
  catch (DivideByZeroException) 
   {
   }

我认为您可以使用
try-catch
block之类的方法来解决此问题:-

  try { 
     int zero = 0; 
     int i = 10 / zero; 
     } 
  catch (DivideByZeroException) 
   {
   }
尝试此操作(也向“Application.ThreadException”添加处理程序):

尝试此操作(也向“Application.ThreadException”添加处理程序):


这是一个非常糟糕的想法,如果故意让它变得非常困难或不可能实现,我不会感到惊讶

如果调用了未处理的异常处理程序,则根据定义,您的程序处于未知且极有可能已损坏的状态。唯一合理的做法是在记录错误并尝试保存任何关键数据后,尽快终止程序。即使这样也有风险,因为错误可能发生在记录器中。。。或在正常关机期间保存数据

是否要捕获被0除的异常?您是否要检查异常发生的位置,以便只捕获自己的错误。或者当别人的代码抛出除法为0的异常时,如果您盲目地忽略它,可以吗

即使你能做到,当异常发生时你会怎么做?这并不是说你可以跳回原来的位置继续前进。堆栈已展开,所有上下文都已丢失


你不想这样做。真正地编写代码,使其不被0除。或者使用try/catch。这就是它的目的。

这是一个非常糟糕的主意,如果故意让它变得非常困难或不可能实现,我也不会感到惊讶

如果调用了未处理的异常处理程序,则根据定义,您的程序处于未知且极有可能已损坏的状态。唯一合理的做法是在记录错误并尝试保存任何关键数据后,尽快终止程序。即使这样也有风险,因为错误可能发生在记录器中。。。或在正常关机期间保存数据

是否要捕获被0除的异常?您是否要检查异常发生的位置,以便只捕获自己的错误。或者当别人的代码抛出除法为0的异常时,如果您盲目地忽略它,可以吗

即使你能做到,当异常发生时你会怎么做?这并不是说你可以跳回原来的位置继续前进。堆栈已展开,所有上下文都已丢失


你不想这样做。真正地编写代码,使其不被0除。或者使用try/catch。这就是它的用途。

我不想使用try-catch。静态void-CurrentDomain\u未处理的异常(对象发送方,未处理的异常ventargs e)我不想使用try-catch。静态void-CurrentDomain\u未处理的异常(对象发送方,未处理的异常ventargs e)使用try/catch。或者您可以使用旧的异常处理模式。这是不可能的,CLR已声明AppDomain已死亡。必须调用Environment.Exit()。请使用try/catch。或者您可以使用旧的异常处理模式。这是不可能的,CLR已声明AppDomain已死亡。您必须调用Environment.Exit()。是否有任何特定的原因不想使用它,因为使用ry catch block被认为是好的?是否有任何特定的原因不想使用它,因为使用ry catch block被认为是好的?