日期:2014-05-20  浏览次数:20821 次

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