首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理异常

处理异常
EN

Stack Overflow用户
提问于 2010-11-24 15:22:11
回答 6查看 277关注 0票数 0

我在try catch块(c#)中有一段代码。代码块可以抛出两个异常(ArgumentException/NullRefernceException)。

代码语言:javascript
复制
try
{
    //Code
}
catch(NullRefernceException Ex)
{
   //Error Handling Code
}
catch(ArgumentException Ex)
{
  //Error Handling code
}

这两个异常中的错误处理代码是相同的。因此,我可以将错误处理代码保留在ArgumentException catch块中,在NullRefernceException上,我可以抛出ArgumentException吗,因为我有一个catch块跟在后面。不确定它是否可以工作,是否对性能有任何危害,以及它是否是一个好的编程实践。

我是不是别无选择,只能在两个catch块中使用相同的代码,或者使用一个单独的方法来保存错误处理代码?

我不想把错误处理代码放在单独的方法和调用中。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-11-24 15:29:53

也许你可以

代码语言:javascript
复制
try
{

}
catch(Exception ex)
{
   if (ex is NullRefernceException || ex is ArgumentException)
   {
     //do something
   } 
   else 
   {
      //maybe re-throw the exception
   }
}
票数 1
EN

Stack Overflow用户

发布于 2010-11-24 15:27:18

  1. 如果你在NullReferenceException的catch中抛出一个ArgumentException,它根本不会被这里的ArgumentException块捕获到。它将被抛出到更高的catch.
  2. Throwing,并且捕获异常的代价很高。你真的不应该仅仅为了避免重复编写相同的代码而这样做。为了不重复您的代码,只需使用通用的处理方法/类
票数 4
EN

Stack Overflow用户

发布于 2010-11-24 15:24:55

我总是尝试遵循DRY原则,这代表不要重复自己,也就是说,不要放多余的代码,因为当你需要更新一些东西时,你可能会搞砸一些东西。因此,我建议将公共逻辑放在一个单独的方法中,并从两个异常中调用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4264335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档