Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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#_.net - Fatal编程技术网

C#向顶级函数抛出异常,然后记录它们

C#向顶级函数抛出异常,然后记录它们,c#,.net,C#,.net,我有以下异常处理代码: private void foo (){ try{ foo1(); } catch(Exception ex){ if (ex is specificException){ //Catch only the exceptions that I can really handle // log the exception // Display a message to the user that so

我有以下异常处理代码:

private void foo (){
  try{ 
     foo1(); 
  }
  catch(Exception ex){ 
     if (ex is specificException){ //Catch only the exceptions that I can really handle
         // log the exception
         // Display a message to the user that something went wrong. 
         return;
     }
     throw; 
  }
}

private void foo1(){
  try{
       // code that could throw an exception
  }
  catch{
    throw;
  }
}
因此,问题是:

我应该继续使用这种方法来处理异常,还是应该将所有异常记录在低级函数中,然后抛出它们

附言
我捕获所有未处理的异常,然后优雅地关闭应用程序。

一般来说,除非要捕获特定类型的异常,否则应避免使用try/catch

try/catch的错误用法示例 好用好用好用
那么,如果我们没有到处都有try/catch,那么我们如何处理异常呢?答案是使用自动测井仪为您完成。这是一个很好的例子,您安装了Nuget软件包和wallah,所有异常都会自动记录,您可以查看它们。

一般来说,除非您想捕获特定类型的异常,否则应该避免使用try/catch

try/catch的错误用法示例 好用好用好用
那么,如果我们没有到处都有try/catch,那么我们如何处理异常呢?答案是使用自动测井仪为您完成。这是一个很好的例子,您安装了Nuget软件包和wallah,所有异常都会自动记录,您可以查看它们。

这是一个基于观点的问题。有些代码样式更喜欢捕捉尽可能靠近其源的异常,而另一些则更喜欢传播它们。通常,您会在stacktrace中获取所有异常。非常有用,特别是如果你在团队中工作一个大项目只是为了提醒一下,你可以有多个catch子句,这样就不需要使用
if(ex is specificeexception)
我试图找出在
foo1
中捕获异常的意义,如果它将在调用语句中被再次抛出和捕获。看起来很可怕。通过这个链接,这是一个基于观点的问题。有些代码样式更喜欢捕捉尽可能靠近其源的异常,而另一些则更喜欢传播它们。通常,您会在stacktrace中获取所有异常。非常有用,特别是如果你在团队中工作一个大项目只是为了提醒一下,你可以有多个catch子句,这样就不需要使用
if(ex is specificeexception)
我试图找出在
foo1
中捕获异常的意义,如果它将在调用语句中被再次抛出和捕获。看起来很可怕。通过这个链接,它讨论除了ArgumentNullException是一个不应该被捕获但应该避免的异常。没错,这只是第一个想到的异常除了ArgumentNullException是一个不应该被捕获但应该避免的异常。没错,这只是第一个想到的异常
try {
   //some work
}
catch(Exception e) {
   //this is bad, it traps everything!
}
try {
   //some work
}
catch(ArguementNullException e) {
   //good, we only trapped the one exception we were interested in, everything is is thrown
}