Exception handling 避免抛出新异常

Exception handling 避免抛出新异常,exception-handling,Exception Handling,我有一个if条件,它检查值并抛出新的NumberFormatException 有没有其他方法来编码这个 if (foo) { throw new NumberFormatException } // .. catch (NumberFormatException exc) { // some msg... } 如果您的目标是避免抛出新异常: if(foo) { //some msg... } else { //do something else } 在Java中

我有一个if条件,它检查值并抛出新的NumberFormatException

有没有其他方法来编码这个

if (foo)
{
    throw new NumberFormatException
}

// ..

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

如果您的目标是避免抛出新异常:

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

在Java中,在尝试将字符串转换为数字之前,可以尝试使用正则表达式解析字符串

如果您试图捕获自己的异常(为什么???),您可以这样做:

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

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

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

那当然,您可以完全避免异常,并在条件块内执行“do something”部分。

如果您试图用其他错误处理机制替换异常的引发,您唯一的选择是返回或设置错误代码-问题是您必须在其他地方检查它


异常是最好的。

如果可以以另一种更优雅的方式处理异常,请不要抛出异常。异常非常昂贵,只应用于发生超出您控制范围的情况(例如,数据库服务器没有响应)

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

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?
}

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

可能需要使用“代码”标记使你的问题更清晰易读。这个问题不是很清楚你需要重新表述你的问题GustlyWind,我的大脑刚刚抛出了QuestionUnableException。请澄清。@Midhat:没有,但尝试中有阵痛-(什么语言?Java?C?#?你可以在一行上放更多的代码。它仍然是可读的(注:讽刺)。:-)