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是对的吗?或者程序应该崩溃?
谢谢!
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;
捕获异常应该只用于捕获意外的