2013-12-19 37 views
1

我有一个小问题,如果我们可以处理if else块,那么DivisionByZeroException的用法是什么。我试着用谷歌搜索,但不能得到正确的答案。任何人都可以详细地告诉我吗?提前致谢DivisionByZero通过使用if else语句

+0

不是一个标准问题 –

+2

有人会问这个问题吗? –

+1

在java中它是[ArithmeticException](http://docs.oracle.com/javase/7/docs/api/java/lang/ArithmeticException.html) –

回答

6

忘掉DivisionByZeroException,几乎所有的异常都可以通过使用if-else逻辑来避免。

例外情况的要点是从某种意外情况中恢复并简化此恢复。如果有10个地方可能会在您的代码中出现异常,则必须确保您已包含所有if-else条件。异常处理简化了这一点。你不必在每一个可能的地方进行验证,只要尝试一下,就会发现一旦发生异常情况。

这也提供了简单的方法来为不同的例外提供不同的恢复机制。

if(check for first type of exception) 
{ 
    do first task 
} 
else 
{ 
    return one type of error 
} 
do some intermediary task 
if(check for first type of exception && check for second type of exception) 
{ 
    do second task 
} 
else 
{ 
    if(exception is of one type) 
     return one type of error 
    if(exception is of second type) 
     return another type of error 
} 

上面的代码可以更清楚,如果你使用一些尝试catch块如下...

try{ 
    do first task 
    do some intermediary task 
    do second task 
} 
catch(first type of exception) 
{ 
    return one type of error 
} 
catch(second type of exception) 
{ 
    return second type of error 
} 
catch(another type of exception developer may have forgotten) 
{ 
    return a generic error 
} 

第二种方法显然会更加清楚,一旦你获得了异常处理的一些好的知识就像其他人一样。在第二种方法中,代码流更容易明显。

+1

另外还有一件东西是佛陀说的。假设你正在使用第三方api(JXL/JNA等)..你不知道如果你传递错误的参数值会发生什么..被调用的函数可能会说“throws someException”(错误的编程实践顺便说一句)...在这种情况下,你不知道你会得到什么异常..如果你不知道你会得到什么异常,你如何使用if-else来防止它? ..使用异常,你可以通过一般化的方式来捕捉它,并将其作为“JXLException/JNAException ..”来处理。 – TheLostMind

+0

是的...好点。你并不总是知道除了什么。 – Buddha