C# - 围绕抛出自定义异常或处理案例构建逻辑更好吗?

标签 c# exception try-catch handle

如果我想构建我的业务逻辑,通过抛出自定义异常或通过添加特定的“If”条件来避免特定情况来处理逻辑是否更好?

例如(愚蠢但很简单的例子):

var success = true;
try{

   if(value == 5){
      throw new CustomException("Invalid Value!");
   }

   DoStuffIfValueIsValid();

}catch(CustomException e){
   success = false;  
}

return success;

对比

var success = true;    

if(value == 5){
   success = false;
} else {
   DoStuffIfValueIsValid();
}
return success;

我知道这个例子看起来很愚蠢,但是在逻辑更多的大规模代码中,我是否应该使用更多的条件来避免使用多个 try catch?

提前致谢!

最佳答案

简单地说,我建议不要使用异常来控制程序的流程。当没有其他选项可以解决问题时,您应该引发异常,而不是跳转到程序的特定点只是为了返回一个结果或另一个结果。异常(exception)是为“特殊”或意外情况保留的。这样做有点像编写 goto。除此之外,它们是昂贵的对象,可能会对性能产生重大影响。请参阅 MSDN 上的这篇文章“Avoid using exceptions for control flow” ' 在 NET Framework 性能规则书中。

关于C# - 围绕抛出自定义异常或处理案例构建逻辑更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097250/

相关文章:

c# - 获取表的架构

java - 在 NoClassDefFoundError 上的 Try/Catch 中类退出

vue.js - Nuxt.js - 'error not defined' 尝试在 asyncData 方法中失败的 await 调用中抛出 404

c# - 在文件中搜索字节序列 (C#)

c# - 替换需要翻译和枚举的enum

exception - 如何在 AspectJ 中围绕建议重新抛出异常

exception - 现有方法的消息无法理解

java - 捕获 java.lang.OutOfMemoryError?

c# - 如何获取局域网中打印机连接的计算机名和IP

java - 抛出异常还是处理异常?