java异常

异常

什么是异常?

  • 阻止程序编译,运行时的错误称作为异常。
  1. 运行时异常
  2. 编译时异常
  3. 逻辑异常

关系图:

image-20200705170047489

常见异常表

image-20200705170613606

image-20200705170620685

image-20200705170628303

检查型异常和非检查型异常

  • 检查型异常

  • # 在Java中所有不是RuntimeException派生的Exception都是检查型异常。
    # 必须进行捕获处理。否则会在编译时报错。
    
  • 非检查型异常

  • # 在Java中所有RuntimeException的派生类都是非检查型异常
    
    # 可以不进行捕获处理,但如果产生了异常,那么将会被JVM进行处理
    
    # 推荐都要捕获处理
    

常见异常

image-20200702112655733

自己创建异常

自创异常:
  • 继承Exception,添加一个有有参构造器,和一个无参构造器
public class CreateException  extends  Exception{
    public CreateException() {

    }
    public CreateException(String msg){
        super(msg);
    }
}
测试:
  • 需要当场捕获就用try{}catch(){}
  • 不需要就往外抛出就行了
public class TestException {
    public static void main(String[] args) {
        try {
            throw new CreateException("自创异常!");
        } catch (CreateException e) {
            e.printStackTrace();
        }
    }
}

最好的实践

  1. 在catch代码块中写明白是哪里出了错误,方便定位异常位置,和便于及时处理
  2. 在连接数据库的时候,对文件IO的操作时,通常会在finally代码块中进行流的关闭处理

throw和throws关键字的不同点

throw

# 是用来怕抛出任意异常的

thorws

# 总是出现在函数头部,用来标明该函数可能抛出的所有异常。

异常链

# 一种处理异常的概念
# 一种异常中抛出另一个异常,从而异常与异常之间形成了链
# 当抛出新异常时。一定要包含原有的异常。
# 这样才能通过getCause()和initCause()来获取最终源头

finall是否会执行

# 如果是try里面有return 那么 finally一定会执行

# 如果是System.exit(0) 退出JVM的话。finally将不会执行

Java 中 final,finalize,finally 关键字的区别

# final 是修饰类,不能被继承。修饰属性,则变成常量。修饰方法。则不能被重写
# finally 是try catch finally 搭配使用的,用来处理异常后,执行的代码块。通常用于关闭一些流和连接的处理。
# finalize 是Object类中的一个方法。当执行GC()垃圾回收时,会调用它,它会去判断对象是否可以回收

继承抛出异常

# 在继承了父类方法后,父类方法上有异常
# 子类重写的时候一定要抛出比父类小的异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值