Try-catch处理程序和DivideByZeroException

时间:2014-06-27 07:18:45

标签: c# try-catch

我有一些功能,可以计算数字而且我会捕获异常:

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

            return 0;
        }
        catch (Exception ex)
        {

            return 0;
        }

那么,这是正确的吗?或者程序应该崩溃?

谢谢!

2 个答案:

答案 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;

只应捕获异常以捕获意外的