栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中try、catch、finally的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中try、catch、finally的使用

try、catch、finally语句块的作用

-》try 块:用于捕获异常

1、后面可以有0个或多个catch块

2、try块后面如果没有catch块,必须有一个finally块

3、执行代码捕获异常后进入catch块,try中出现异常代码处后面的代码不会再继续执行

-》catch 块:用于处理try捕获到的异常

1、可以有多个catch块

2、匹配到一个catch块后,其他catch块不会被执行

3、执行完毕后,如果有finally块,则进入finally块,finally之后的语句也继续执行

-》finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行

1、当try块中或者catch块中遇到return语句时,先执行完finally中的代码,再执行return语句

2、如果有return语句,执行完finally后,  finally之后的语句不会再被执行

try、catch、finally语句块的执行顺序
public void try_catch_finally() {
    try {
        //代码a:代码执行区域
    } catch (Exception e1) {
        //代码b1:异常处理区域
    }catch (Exception e2) {
        //代码b2:异常处理区域
    }finally {
        //代码c:有无异常都需要执行的代码块
    }
    //代码d:其它内容
}

总结:

1)当try没有捕获到异常时:try语句块的语句逐一执行,程序跳过catch语句块,执行finally语句块和其后的语句;

2)当try捕获到异常,catch语句块里有处理此异常的情况:在try语句块中是按照顺序来执行的,当执行到某一条语句出现异常时,程序将跳到catch语句块,并与catch语句块逐一匹配,找到与之对应的处理程序,其他的catch语句块将不会被执行,catch语句块执行完后,执行finally语句块里的语句。

3)若catch语句块里没有处理此异常的情况:此异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally语句块后的语句不会被执行

return语句对执行顺序的影响
public String try_catch_finally() {
    try {
        return("try");
    } catch (Exception e) {
        return("catch");
    }
}
public String try_catch_finally() {
    try {
        return("try");
    } catch (Exception e) {
        return("catch");
    } finally {
        System.out.print("finally");
    }
}
public String try_catch_finally() {
    try {
        return("try");
    } catch (Exception e) {
        return("catch");
    } finally {
        return ("finally");
    }
}
public class test {
    static int x = 10;
    static int y = 20;
    static int z = 30;
    public static void main(String[] args) {
        int finallyValue = finallyReturn();
        System.out.println("finallyValue=" + finallyValue); //31
        System.out.println("x=" + x); // 11
        System.out.println("y=" + y); // 20
        System.out.println("z=" + z);// 31
    }
    private static int finallyReturn() {
        try {
            return ++x;
        } catch (Exception e) {
            return ++y;
        } finally {
            return ++z;
        }
    }
}
import java.util.ArrayList;
public class test {
    public static String value="";
    public static void finallyReturn(boolean flag){
        try{
            if(flag){
                throw new Exception();
            }
            value+="1";
        } catch(Exception e){
            value+="2";
            return;
        }  finally{
            value+="3";
        }
        value+="4";
    }
    public static void main(String args[]){
        finallyReturn(true);
        System.out.println(value);//13423
        finallyReturn(false);
        System.out.println(value);//134
        ArrayList list = new ArrayList<>();
        list.add(1);
    }
}
finally不会执行的情况

1、try语句没有被执行到,如在try语句之前返回了,finally语句就不会执行

2、在try块中有System.exit(0)这样的语句,System.exit(0)将会终止Java虚拟机JVM,相当于整个程序停止

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号