异常的基本用法

异常是什么?

异常是程序运行时出现错误之后的一种通知机制
Java中的异常有很多种,针对不同种类的异常,可以有不同的处理方式
如果在代码中不做任何处理,此时异常就会交给JVM来处理,JVM一般处理的方式就是把程序直接强行终止

异常的应用场景 -> 防御式编程

LBYL: Look Before You Leap 三思而后行 先进行合法校验,校验通过,再进行实际操作
EAFP(推荐): It’s Easier to Ask for Forgiveness than Permission 事后获取原谅比事先获取更容易
EAFP风格:核心语法支持就是异常机制

出现异常之后一些典型处理方式(catch 中应该写什么)

1. 直接让程序结束:对于致命问题
2. 打印日志:对于普通问题,可以记录一下出现问题的原因/代码位置(.printStackTrace())
3. 给程序员发送报警短信/微信/电话

Java异常体系

1. 最顶层的父类 Throwable 派生出Error(JVM使用) Exception(程序员使用)
2. 当前看到的这一大堆异常类分成两个阵营
          a) Error 和 Runtime Exception 构成了一个阵营,非受查异常
           b)除了上面剩下的,都是受查异常
           { 当代码可能出现受查异常的时候,必须在代码中显示处理
             具体处理方式有两种
             a)使用 try catch 当场就处理
             b)使用throws把异常交给方法调用者处理(把锅甩给调用者处理了,调用者还得try catch 或者 throws 多个受查异常 。可以使用throws 声明多个类型,多给类型之间使用","分割)}

异常处理流程

1. 程序先执行try中的代码
2. 如果try中的代码出现异常,就会结束try中的代码,看和catch中的异常类型是否匹配
3. 如果找到匹配的异常类型,就会执行catch中的代码
4. 如果没有找到匹配的异常类型,就会将异常向上传递到上层调用者
5. 无论是否找到异常的匹配类型,finally中的代码都会被执行到(该方法结束之前执行)

如果上层调用者也没有处理异常,就会继续向上传递,一直到main方法也没有合适的代码处理异常,就会交给JVM来进行处理,此时程序就会异常终止

自定义异常类

创建出来的异常类其实没啥实质性的代码
创建出来的本质目的时为了增加一些异常的类型 这样的化 catch语句就可以根据不同的异常类型进行更加灵活的处理
自定义的异常类 如果继承自 Exception(推荐) 此时就是一个受查异常 如果继承自RuntimeException 就是一个非受查异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值