程序如下:
- Java code
public class cat { public static void main(String args[]) { System.out.println("异常处理示例\n"); try { int i=10; i/=0; System.out.println("try.....\n"); }catch(IndexOutOfBoundsException e) { System.out.println(e.getMessage()); } finally { System.out.println("执行finally语句"); } }}
1.为什么try的println 为什么不执行.
2.catch后边的getMessage()为什么输出上在 System.out.println("执行finally语句");之后.
3.我的结果如下:
--------------------Configuration: <Default>--------------------
异常处理示例
执行finally语句
Exception in thread "main" java.lang.ArithmeticException: / by zero
at cat.main(cat.java:8)
Process completed.
------解决方案--------------------
i/=0;这句出来异常,跳出了try块,所以 System.out.println("try.....\n");没有执行
2.catch后边的getMessage()为什么输出上在 System.out.println("执行finally语句");之后.
因为这个异常不是IndexOutOfBoundsException异常,catch块没有捕获到,换成java.lang.ArithmeticException
------解决方案--------------------
1. 在执行到i/= 0;语句时就捕获到异常,这时就转向抛出异常语句,因此System.out.println("try.....\n");不会执行
2. getMessage()输出信息在System.out.println("执行finally语句");之前执行.
Eclipse下执行结果如下:
- Java code
异常处理示例Exception in thread "main" java.lang.ArithmeticException: / by zero at test.Cat.main(Cat.java:8)执行finally语句
------解决方案--------------------
代码有误,你写的这个根本抛不出IndexOutOfBoundsException异常
顺序,try catch finally
------解决方案--------------------
因为你catch语句要捕获的不是你现在抛出的异常,所以finally自然先输出了
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
抛出异常了,try后面的语句就不会再继续执行了啊。
------解决方案--------------------
------解决方案--------------------
1. 在执行到i/= 0;语句时就捕获到异常,这时就转向抛出异常语句,因此System.out.println("try.....\n");不会执行
2. getMessage()输出信息在System.out.println("执行finally语句");之前执行.
Eclipse下执行结果如下:
Java code
异常处理示例
Exception in thread "main" java.lang.ArithmeticException: / by zero