当前位置:编程学习 > JAVA >>

java 异常: try...catch...finally

在看下面的内容之前,想问大家一个问题:

finally 语句是不是一定会被执行

 

使用 Integer.valueOf 方法模拟异常,来说明关于 try catch finally 之间的问题。

 

示例 1:没有异常,正常情况


[java]
public class TryCatchFinally { 
 
    public static void main(String[] args) { 
        try { 
            System.out.println("try statement     :-)"); 
            Integer.valueOf("2"); 
        } catch (NumberFormatException nfe) { 
            System.out.println("catch statement   :-)"); 
        } finally { 
            System.out.println("finally statement :-)"); 
        } 
    } 

示例 2:没有异常,正常情况,但是 try 语句里面添加 return
[java] 
public class TryCatchFinally { 
 
    public static void main(String[] args) { 
        try { 
            System.out.println("try statement     :-)"); 
            Integer.valueOf("2"); 
            return; 
        } catch (NumberFormatException nfe) { 
            System.out.println("catch statement   :-)"); 
        } finally { 
            System.out.println("finally statement :-)"); 
        } 
    } 

示例 1 和 示例 2 的运行结果一致:

 

 

示例 3:制造异常


[java] 
public class TryCatchFinally { 
 
    public static void main(String[] args) { 
        try { 
            System.out.println("try statement     :-)"); 
            Integer.valueOf("bluetooth"); 
        } catch (NumberFormatException nfe) { 
            System.out.println("catch statement   :-)"); 
        } finally { 
            System.out.println("finally statement :-)"); 
        } 
    } 

示例 4:制造异常,catch 语句里面添加 return

[java] 
public class TryCatchFinally { 
 
    public static void main(String[] args) { 
        try { 
            System.out.println("try statement     :-)"); 
            Integer.valueOf("bluetooth"); 
        } catch (NumberFormatException nfe) { 
            System.out.println("catch statement   :-)"); 
            return; 
        } finally { 
            System.out.println("finally statement :-)"); 
        } 
    } 

示例 3 和 示例 4 的运行结果一致:

 

 

由此,可以看出以上四种情况,finally 语句都被执行了。

 

示例 5:制造异常,catch 语句里面添加 return

 

目的:验证finally代码块后面的代码是否会被执行 ??????


[java] 
public class TryCatchFinally { 
 
    public static void main(String[] args) { 
        try { 
            System.out.println("try statement     :-)"); 
            Integer.valueOf("bluetooth"); 
        } catch (NumberFormatException nfe) { 
            System.out.println("catch statement   :-)"); 
            return; 
        } finally { 
            System.out.println("finally statement :-)"); 
        } 
 
        System.out.println("out of try...catch...finally statement"); 
    } 

执行结果:

 

 

如果将 catch 语句里面添加 return 注释掉,执行结果:

 

 

示例 6:制造异常,try 语句里面添加 return


[java] 
public class TryCatchFinally { 
 
    public static void main(String[] args) { 
        try { 
            System.out.println("try statement     :-)"); 
            Integer.valueOf("dd"); 
            return; 
        } catch (NumberFormatException nfe) { 
            System.out.println("catch statement   :-)"); 
        } finally { 
            System.out.println("finally statement :-)"); 
        } 
 
        System.out.println("out of try...catch...finally statement"); 
    } 

执行结果:

 

 

示例 7:无异常,try 语句里面添加 return


[java] 
public class TryCatchFinally { 
 
    public static void main(Stri

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,