【3-7】异常处理

异常处理

异常
  1. 导致程序中断运行的一种指令流;
  2. 体系结构:Throwable存在两个子类:Error(错误,无法用代码处理)和Exception(异常,try…catch处理)
  3. Exception分为非受检异常(RuntimeException,运行时的异常,写完代码就飘红,可以不扔)和受检异常(非运行时的异常,写完代码不飘红,必须明确抛出throws)
异常处理
  1. try{
    	// 有可能发生异常的代码段
    }catch(异常类型1 对象名1){
    	// 异常的处理操作
    }catch(异常类型2 对象名2){
    	// 异常的处理操作
    } ...
    finally{
    	// 异常的统一出口,无论是否发生异常,finally必然执行(如内存释放等操作可以放在这)
    	//如果是程序被关闭的情况(指软件在内存里没了,电脑停电,关机),finally才不会执行
    }
    

    流程:

    1、 一旦产生异常,则系统会自动产生一个异常类的实例化对象
    2、 那么,此时如果异常发生在try语句,则会自动找到匹配的catch语句执行,如果没有在try语句中,则会将异常抛出(抛给调用产生异常的方法代码的位置);
    3、 所有的catch根据方法的参数匹配异常类的实例化对象,如果匹配成功,则表示由此catch进行处理。

    try{
        System.out.println(x/y);
    }catch(ArithmeticException e){
        System.out.println("除数不能为0");
    }
    

    异常处理能让代码能继续往下走,不会崩溃

    (GC处理的内存垃圾,蓝牙属于硬件,不会被GC释放内存

只要是RuntimeException的子类,则表示程序在操作的时候可以不必使用try…catch进行处理,如果有异常发生,则由JVM进行处理。当然,也可以通过try catch处理。

throws

不处理,而是交给调用处理

  1. 异常是否抛出去,应该站在哪个角度思考?

    一个方法用户传递参数才能运行,如果调用这个方法传参传错了,不在方法本身,这时候用throws;

  2. 格式:
    返回值 方法名称()throws Exception{}

throw(用的少)
  1. 不会导致系统产生异常,自己造一个异常(用户年龄设置180岁时

     throw new Exception("抛着玩的。") ;
    
自定义异常
  1. (非受检查,RuntimeException)不论是抛出去还是产生的,运行时的不会飘红线,都不需要明确的处理try…catch;
  2. (受检)飘红线,必须抛出去或try catch,明确说明怎么处理,才能正常编译;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值