07异常捕获与处理

异常处理机制可以保证程序出错后依然正确的执行。

01 异常的分类

异常最大的父类是Throwable,Throwable有两个子类:Exception和Error。Exception表示程序可处理的异常,而Error表示JVM错误。

Exception有一个RuntimeException子类,我们自定义异常的时候可以继承Exception或者RuntimeException,如果继承Exception的是编译型异常,在编译时要求用户进行强制性的处理,如果继承RuntimeException是运行时异常,用户可以根据自己的需要选择性的处理。

02 异常的处理方式

每当出现一个异常,就会实例化一个对应的异常实例对象,当然也可以通过throw关键字手动创建一个异常抛出去throw new RuntimeException("这有一个问题!")

异常的处理有两种方式,一种是通过try{}catch(){}finally{}捕获异常,一种是通过在方法上加throws来声明异常,让方法的调用者去处理异常。

如果异常没有被成功处理,则会交给JVM默认处理,先打印错误信息,后程序停止运行。

03 "return"和"finally"的执行问题

假如现在有一个方法,方法本身有一个return语句,但是在finally中又写了一个return,那么会返回哪一个数据呢?

class Message {
    public static String echo(String message){
        try {
            return "hello";
		}finally {
            return "你好";
        }
    }
}

System.out.println(Message.echo());//你好

finally代码块永远都要执行,所以在finally中可以实现return数据的修改。

块永远都要执行,所以在finally中可以实现return数据的修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值