编译器认为try块中是有可能产生异常操作的,也就是说在return语句之前如果出现异常的话,那么return语句根本没有机会得到执行,所以编译器会认为缺少return语句,在catch或者finally模块中添加一个return 语句就行了。
还有就是你的代码中Exception thrown Release resources 两边的引号是中文标点符号。
我把你的代码稍微改了一下,你参考下吧。- public class ExceptionTest
- {
-
- public double div(double a, double b)
- {
- try
- {
- return a/b;
- }
- catch(Exception e)
- {
- e.printStackTrace();
- System.out.println("Exception thrown");
- return -1;
- }
- finally
- {
- System.out.println("Release resources");
- }
- }
- public static void main(String[] args)
- {
- ExceptionTest et = new ExceptionTest();
- System.out.println(et.div(1, 2));
- System.out.println(et.div(3.4, 0));
-
- }
-
- //为什么编译不成功,异常没有捕获吗???????
- }
复制代码 |