我有一些功能,可以计算数字而且我会捕获异常:
try{
....
return mainCount /count;
}
catch (DivideByZeroException ex)
{
return 0;
}
catch (Exception ex)
{
return 0;
}
那么,这是正确的吗?或者程序应该崩溃?
谢谢!
答案 0 :(得分:3)
从不 抓住Exception
(基类)不抛:这意味着"无论发生什么,只返回0& #34 ;.如果出现内部.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;"!
}
答案 1 :(得分:2)
你不应该使用异常来指示你的程序流程,你可以很容易地看到这里可能出现的错误所以我建议如下
if(count == 0)
return 0;
return mainCount / count;
只应捕获异常以捕获意外的