避免抛出新的异常

时间:2008-09-30 11:50:44

标签: exception-handling

我有 if 条件检查值并且它会抛出新的 NumberFormatException

还有其他方法来编码

if (foo)
{
    throw new NumberFormatException
}

// ..

catch (NumberFormatException exc)
{
    // some msg...
}

6 个答案:

答案 0 :(得分:4)

如果你正在做这样的事情:

try
{
   // some stuff
   if (foo)
   {
      throw new NumberFormatException();
   }
}
catch (NumberFormatException exc)
{
   do something;
}

然后确定,你可以完全避免异常并在条件块中执行“做某事”部分。

答案 1 :(得分:2)

如果您的目标是避免抛出新的例外:

if(foo)
{
  //some msg...
} else
{
  //do something else
}

答案 2 :(得分:1)

如果您能以另一种更优雅的方式处理异常,请不要抛出异常。例外情况很昂贵,只应用于无法控制的情况(例如数据库服务器没有响应)。

如果您尝试确保设置了一个值并且格式正确,则应尝试以更优雅的方式处理这些条件的失败。例如......

if(myObject.value != null && Checkformat(myObject.Value)
{
    // good to go
}
else
{
    // not a good place to be.  Prompt the user rather than raise an exception?
}

答案 3 :(得分:0)

在Java中,您可以尝试使用正则表达式解析字符串,然后再尝试将其转换为数字。

如果你想捕捉自己的异常(为什么???),你可以这样做:

try { if (foo) throw new NumberFormatException(); }
catch(NumberFormatexception) {/* ... */}

答案 4 :(得分:0)

如果你试图用其他一些错误处理机制替换抛出异常,你唯一的选择是返回或设置错误代码 - 问题是你必须去确保在别处检查它。

例外是最好的。

答案 5 :(得分:0)

如果您知道将导致您抛出NumberFormatException的流,则代码处理该情况。您不应该使用Exception层次结构作为程序流机制。