请解释为什么异常出现在第一个程序中而不是第二个程序中。
1)在read方法中没有return语句
class Example { public static void read() { try { int i = 9/0; } finally { System.out.println("This proogram is giving exception"); } } public static void main(String[] fel) { read(); } }
2)在读取方法中使用return语句
class Example { public static void read() { try { int i = 9/0; } finally { System.out.println("This proogram is not giving exception"); return; } } public static void main(String[] fel) { read(); } }
最终不应该在内部使用分支语句(return,goto),因为这样的语句的执行会使在最终之前执行的其他指令无效。
在Java语言规范说:如果try块的执行任何其他原因[R突然结束,那么finally块被执行,然后有一个选择:
注 –在finally块内的return语句将导致在try或catch块中引发的任何异常都将被丢弃。