Exceotion 异常

异常:是程序中导致程序中断的一种指令流,当异常发生时,如果没有进行良好的处理,则程序将会中断执行。

异常最大父类是 Throwable,它分为两个子类:Exception 和 Error。Exception 表示程序处理的异常,Error 表示 JVM 错误,一般不由开发人员处理。

Java 提供的是异常处理的抓抛模型:
1.”抓”:当我们执行代码时,一旦出现异常,就会在异常的代码处生成一个异常类型的对象,并将此对象抛出(自动抛出/手动抛出)。
①.一旦抛出此异常对象,那么程序就将终止执行。
②.此异常类的对象抛给方法的调用者。
2.”抓”:抓住上一步抛出的异常对象;如何抓?即为异常的处理方式。
方式一:
try{
//可能出现异常的代码
}catch(Exception1 e1){
//处理方式一
}catch(Exception2 e2){
//处理方式二
}finally{
//一定执行的代码(不管出不出现异常)
}
-如果 catch 中的异常是 “并列” 关系,顺序没有要求。
-如果 catch 中的异常是 “包含” 关系,需将子类放在上面,父类放在下面,否则报错。
-try-catch 可以相互嵌套。
方式二:在方法的声明出,显示抛出该异常对象的类型。
1.异常的对象可以逐层向上抛,直至main中,在向上抛的过程中可以通过try–catch-finally 处理。
2.throw 手动抛出一个异常
3.抛出自定义异常类(继承现有的异常类)

throws关键字主要是在方法定义上使用的,表示此方法中不进行异常处理,而交给被调用处处理。

Error 和 Exception 的区别?
Error:指的是JVM错误,这个时候的程序并没有执行,无法处理。
Exception:指的是程序中出现的错误,可以进行异常处理。

throw 和 throws 的区别?
throw:用户手工抛出异常类的实例对象。
throws:用户方法的声明上,表示此方法不处理异常,而将异常交给程序被调用处。

try-catch-finally 结构:
分析如下代码结果:

package cn.edu.pzhu.cg.Exception;

public class ReturnExceptionDemo {

    static void methodA(){
        try {
            System.out.println("进入方法A");
            throw new RuntimeException("制造异常");//抛出异常,程序中断前先执行 fanally 里面代码
        } finally {
            System.out.println("用A方法的finally");
        }
    }
    static int methodB(){
        try {
            System.out.println("进入方法B");        //同理,retuan 1 前,执行 finally 代码
            return 1;
        } finally {
            System.out.println("用B方法的finally");
            //return 2;
        }
    }
    public static void main(String[] args) {
        try {
            methodA();
        } catch (Exception e) {     //处理 methodA() 方法抛出的异常
            System.out.println(e.getMessage());
        }
        int i = methodB();
        System.out.println(i);
    }
}

正确结果:
这里写图片描述

如果将 methodB() 方法修改为如下:

 static int methodB(){
        try {
            System.out.println("进入方法B"); 
            return 1;
        } finally {
            System.out.println("用B方法的finally");
            return 2;
        }
    }

正确结果:
这里写图片描述

当执行 到 “return 1” 时,先去执行 finally 里面代码,输出信息后直接就 “return 2” 退出该方法,所以在控制台输出的结果为2。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值