Java笔记八 异常

Java笔记八 异常

  • java.lang.Throwable
    在这里插入图片描述
Error和Exception的区别
  • Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;
  • Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。
可查异常和不可查异常
  • 可查异常(编译器要求必须处置的异常)
  • 不可查异常 : 运行时异常和错误
try-with-resource
throw和throws
  • 异常的申明(throws)
前执行的语句必属于某个方法,Java解释器调用main方法执行开始执行程序。
若方法中存在检查异常, 如果不对其捕获,那必须在方法头中显式声明该异常,以便于告知方法调用者此方法有异常,需要进行处理。
public static void method() throws IOException, FileNotFoundException{
    //something statements
}
  • 异常的抛出(throw)
Java 异常的处理机制

Java的异常处理本质上是抛出异常和捕获异常。

  • 抛出异常:对于当前环境无法解决的异常情形,只能从当前环境跳出,把问题交给上一级环境,也就是抛出异常。抛出异常后,会在堆上创建一个异常对象,当前的执行路径被终止,并且从当前环境中弹出对异常对象的引用。异常处理机制接管程序,并寻找一个恰当的地方继续执行程序(异常处理器或异常处理程序:任务是将程序从错误状态中恢复,以使程序要么换一种方式运行,要么继续运行下去)。
  • 捕获异常:潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。
异常的底层
  • JVM处理异常的机制
  • Exception table
语法
  • try{} 里有一个 return 语句,那么紧跟在这个 try 后的 finally{} 里的 code 会不会被执行,什么时候被执行,在 return 前还是后?
如果存在finally代码块,try中的return语句不会立马返回调用者,
而是记录下返回值待finally代码块执行完毕之后再向调用者返回其值
  • 常见的运行时异常
ArithmeticException(算术异常) 
ClassCastException (类转换异常) 
IllegalArgumentException (非法参数异常)
IndexOutOfBoundsException (下标越界异常) 
NullPointerException (空指针异常) 
SecurityException (安全异常)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值