首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

try-catch-finally 的输出顺序解决办法

2012-01-20 
try-catch-finally 的输出顺序程序如下:Java codepublic class cat {public static void main(String args

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 


at test.Cat.main(Cat.java:8) 
执行finally语句 


finally为无论抛出异常与否,都会执… 

[解决办法]
1. 在执行到i/= 0;语句时就捕获到异常,这时就转向抛出异常语句,因此System.out.println("try.....\n");不会执行 
2. catch语句在finally之前执行,但是你这边捕获的Exception不是程序抛出的Exception,所以你写的getMessage()没执行
真正执行的getMessage()是系统自己的,在最外层捕获的,所以看上去在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

[解决办法]
探讨
i/=0;这句出来异常,跳出了try块,所以 System.out.println("try.....\n");没有执行
2.catch后边的getMessage()为什么输出上在 System.out.println("执行finally语句");之后.
因为这个异常不是IndexOutOfBoundsException异常,catch块没有捕获到,换成java.lang.ArithmeticException

[解决办法]
我怀疑 “catch后边的getMessage()为什么输出上在 System.out.println("执行finally语句");之后. 
”???能执行到这吗?
[解决办法]
首先 i/=0; 这里抛出异常,但是catch快并没有捕捉到这个异常,所以catch块中的不执行
然后执行 finally{}
[解决办法]
探讨
首先 i/=0; 这里抛出异常,但是catch快并没有捕捉到这个异常,所以catch块中的不执行
然后执行 finally{}

[解决办法]
家一个捕获Exception异常的区域,
执行顺序应该是如下吧.

public class cat 
{
public static void main(String args[])
{
System.out.println("异常处理示例\n");
try
{
int i=10; i/=0;
System.out.println("try.....\n");//因为"int i=10; i/=0;"出现异常,所以这里不被执行输出.
}catch(IndexOutOfBoundsExceptione)
{
System.out.println(e.getMessage());//抛出的异常类型不符,这里也不会被执行
}catch(Exceptione e1)
{
System.out.println(e1.getMessage());//这里被执行了 第一个输出
}

finally
{
System.out.println("执行finally语句");//这里被执行了 第二个输出

}

}
}
[解决办法]
2楼已经解决
[解决办法]
try catch finally 顺序是这样,错了的话,是你的程序问题了。
[解决办法]
探讨
i/=0;这句出来异常,跳出了try块,所以 System.out.println("try.....\n");没有执行
2.catch后边的getMessage()为什么输出上在 System.out.println("执行finally语句");之后.
因为这个异常不是IndexOutOfBoundsException异常,catch块没有捕获到,换成java.lang.ArithmeticException


[解决办法]
谢谢楼主,学习了

热点排行