Try-catch处理程序和DivideByZeroException

本文关键字:DivideByZeroException 程序 处理 Try-catch | 更新日期: 2023-09-27 18:10:34

我有一些函数,计算数字和捕获异常:

try{
....
 return mainCount /count;
}
 catch (DivideByZeroException ex)
        {
            return 0;
        }
        catch (Exception ex)
        {
            return 0;
        }

那么,这个catch是对的吗?或者程序应该崩溃?

谢谢!

Try-catch处理程序和DivideByZeroException

Never catch Exception(基类)without throw:这意味着"无论发生了什么都返回0"。在内部。net错误或RAM损坏的情况下,这不是一个理想的行为…

  try { 
    ...
    return mainCount / count;
  }
  catch (DivideByZeroException) { // <- You don't need instance ("ex") here
    // quite OK: return 0 when count == 0
    return 0;
  }
然而,更好的做法是测试count == 0:
  return count == 0 ? 0 : mainCount / count;

Exception捕获的典型模式

  try {
    ...
  }
  catch (Exception e) {
    // Whatever had happend, write error to log
    SaveToLog(e, ...);
    // And throw the exception again
    throw; // <- not "throw e;"! 
  }

您不应该使用异常来指示程序的流程,您可以很容易地看到这里可能发生什么错误,因此我建议如下

if(count == 0)
    return 0;
return mainCount / count;

捕获异常应该只用于捕获意外的

相关文章:
  • 没有找到相关文章