我有这个代码。在aMethod()
中有try块,但没有catch块来处理抛出的异常。生成的输出最终异常完成。谁能解释一下这是怎么回事?
public class Test
{
public static void aMethod() throws Exception
{
try /* Line 5 */
{
throw new Exception(); /* Line 7 */
}
finally /* Line 9 */
{
System.out.print("finally "); /* Line 11 */
}
}
public static void main(String args[])
{
try
{
aMethod();
}
catch (Exception e) /* Line 20 */
{
System.out.print("exception ");
}
System.out.print("finished"); /* Line 24 */
}
}
答案 0 :(得分:1)
您将aMethod()
声明为throws Exception
,因此它可以抛出任何已检查的异常,而不必捕获任何内容。
答案 1 :(得分:1)
finally
块,异常或不执行 * 。这就是导致您看到的第一个打印输出"finally"
的原因。main
,它会被catch
块捕获,生成"exception"
。"finished"
以完成输出。这就是finally
的工作原理。而且,如果你这样做
try {
throw new Exception();
} catch (Exception e) {
...
} finally {
...
}
将执行catch
和finally
块中的代码。
* 在构建一个不执行finally
块的程序退出的情况下,有一些极端情况,但它与示例中的代码无关。