try-catch-finally 的输出顺序
程序如下:
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自然先输出了
------解决方案-------------------- 探讨 i/=0;这句出来异常,跳出了try块,所以 System.out.println("try.....\n");没有执行 2.catch后边的getMessage()为什么输出上在 System.out.println("执行finally语句");之后. 因为这个异常不是IndexOutOfBoundsException异常,catch块没有捕获到,换成java.lang.ArithmeticException
------解决方案-------------------- 探讨 i/=0;这句出来异常,跳出了try块,所以 System.out.println("try.....\n");没有执行 2.catch后边的getMessage()为什么输出上在 System.out.println("执行finally语句");之后. 因为这个异常不是IndexOutOfBoundsException异常,catch块没有捕获到,换成java.lang.ArithmeticException
------解决方案-------------------- 抛出异常了,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 at test.Cat.main(Cat.java:8) 执行finally语句 finally为无论抛出异常与否,都会执…
------解决方案-------------------- 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