我正在学习SCJP 6学习指南Exam_310-065的第5章以及例外声明和公共界面部分
“每个方法必须通过提供catch子句处理所有已检查的异常,或者将每个未处理的已检查异常列为抛出 异常“。
我们如何将每个未处理的已检查异常列为抛出异常,以及它在代码中的外观如何?感谢。
答案 0 :(得分:5)
看起来像这样:
public void foo() throws SomeCheckedException, AnotherCheckedException
{
// This method would declare it in *its* throws clause
methodWhichThrowsSomeCheckedException();
if (someCondition)
{
// This time we're throwing the exception directly
throw new AnotherCheckedException();
}
}
有关详细信息,请参阅section 8.4.6 in the JLS。
答案 1 :(得分:2)
例如,如果你有:
public void doSomething() throws SomeException {
...
throw new SomeException();
}
你要调用doSomething
,你必须catch
异常,或者声明使用它的方法也容易抛出SomeException
,因此可以进一步传播它调用堆栈:
public void doSomethingElse() throws SomeException {
doSomething();
}
或者
public void doSomethingElse() {
try {
doSomething();
}
catch (SomeException) {
// Error handling
}
}
考虑到RuntimeException
未被检查的例外,因此它们是此规则的例外。