Java 中的异常架构体系

异常类型

在这里插入图片描述

Throwable 类是 Error 和 Exception 的父类,只有是 Throwable 的实例才能被 JVM 或者 Java 语句抛出,捕获。

  • Error:表示不希望被程序捕获或者是程序无法处理的错误,Error 类对象由 Java 虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。

  • Checked Exception:受检查异常,需要被 try catch 捕获或者 throws 抛出;如果不处理,IDE 会提示编译不通过。

  • Runtime Exception(Unchecked Exception)extends Exception:运行时异常,由程序逻辑错误引起,程序应该尽可能的避免该类异常。

异常处理

异常发生时,有两种处理方式:捕获 or 抛出

捕获:try catch

抛出

  • 方法名上面声明抛出 throws。

  • 方法内抛出 throw

异常抛出限制

  • 父类的方法没有声明异常,子类在重写该方法的时候不能声明异常;

  • 子类重写父类抛出的异常方法时,可以抛出或者不抛出异常;若抛出异常,子类抛出的异常类型必须与父类方法抛出异常类型相同,或者子类抛出的异常类型是父类方法抛出异常的子类。

错误抛出情况:子类抛出的 IOException 和 RuntimeException 不是同类型,也不是其子类。

public class C {
    public void fun() throws RuntimeException{
    }
}

public class D extends C {
    public void fun() throws IOException,RuntimeException{
    }
}

  • 如果父类抛出了 CheckedException ,那么子类重写的方法可以抛出 RuntimeException

    正确的抛出情况:
    public class A {
        public void fun() throws IOException {
        };
    }
    
    public class B extends A {
        public void fun() throws IOException,RuntimeException{
        }
    }
    

自定义异常

所有异常都必须是 Throwable 的子类。

如果希望写一个检查性异常类,则需要继承 Exception 类。

如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

异常捕获流程

1、try{} 里有一个 return 语句,那么紧跟在这个 try 后的 finally{} 里的 code 会不会被执行,什么时候被执行,在 return 前还是后?

答案:会执行,在方法返回调用者前执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值