2008-09-30 105 views
-4

我有一个如果条件,其检查值和它抛出新NumberFormatException的避免抛出一个新的异常

是否有任何其他方式,如果你的目标是实现代码

if (foo) 
{ 
    throw new NumberFormatException 
} 

// .. 

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

可能想使用'代码'标记来让你的问题更清晰一些。 – itsmatt 2008-09-30 11:52:18

+0

这个问题不是很清楚,你需要重新修改你的问题 – 2008-09-30 11:53:14

回答

2

避免抛出一个新的异常:

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

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

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

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

如果你正在做的事情,例如这个:

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

然后确定,你可以完全避免这个异常,并且在条件块中做'做些事情'部分。

0

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

这个例外是最好的。

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

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