Java中的“未处理的已检查异常作为抛出异常”

时间:2012-06-19 16:55:31

标签: java

我正在学习SCJP 6学习指南Exam_310-065的第5章以及例外声明和公共界面部分

  

“每个方法必须通过提供catch子句处理所有已检查的异常,或者将每个未处理的已检查异常列为抛出   异常“。

我们如何将每个未处理的已检查异常列为抛出异常,以及它在代码中的外观如何?感谢。

2 个答案:

答案 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未被检查的例外,因此它们是此规则的例外。