2009-07-16 66 views
1

我正在学习Java程序员认证(SCJP)考试。关于例外情况的问题,在处理例外情况时最好处理特定的例外情况,如NumberFormatException或使用父母Exceptionclass捕获所有例外情况?SCJP考试:处理异常

基于我的课程,未经检查的例外基本上是RunTimeException,这主要是程序错误的结果。这是否意味着,当我手动抛出一个异常,我宁愿用:

new Exception("... my message...") 

而且,我不应该处理RunTimeException? 只处理检查的异常?

回答

2

您应该尽可能处理特定的Exception s。如果你知道什么时候可能抛出RuntimeException,你通常应该修复你的程序,以免抛出Exception

由于作为俘获检查远Exceptions去,你要处理具体的Exception,你可以这样:

try { 
} catch (FileNotFoundException fnfe){ 
} catch (IOException ioe){ 
} catch (Exception e){ 
} 

当你扔Exceptions,你应该几乎从来不使用throw new Exception()。 抛出一个异常,可以让看到它的人得到关于抛出时发生的事情的更多信息。 (即IndexOutOfBoundsNullPointerExceptions。他们给特定的信息瓦特/出连看消息或堆栈跟踪。)

如果你想抛出一个Exception,你不觉得Java API中有一个适合你的情况,最好将子类或子类扩展为给它一个非常丰富的名称。

0

在这些情况下,您可以继承Exception(而不是RuntimeException)。