Java学习笔记7

异常

  1. 什么是异常
  2. 能辨别常见异常及其含义
  3. 理解异常产生的原理
  4. 能处理异常
  5. 能自定义异常

什么是异常

异常是在程序中导致程序中断的一种指令流

异常的体系结构

异常指的是Exception,Exception类,在Java中存在一个父类Throwable(可能的抛出)
Throwable存在两个子类

  1. Error:表示的是错误,是JVM发出的错误操作,只能尽量避免,无法用代码处理
  2. Exception:一般表示所有程序中的错误,所以一般在程序中进行try-catch处理
    1. 受检异常:除RuntimeException以外—在编译成.class文件时,JVM自动检查
    2. 非受检异常:RuntimeException---------代表着,运行时出现的异常,不受JVM的检查

处理异常

如果相对异常进行处理,则必须采用标准的处理格式,处理格式语法如下

try{
	//有可能发生异常的代码片段
}catch(异常类型1  异常名){
	//异常的处理操作
}catch(异常类型2  异常名){
	//异常的处理操作
}
finally{
	//必然执行的异常的统一出口
	//无论是否发生异常,finally必然执行
	//只有程序结束了,finally才不会执行,例如电脑重启QAQ或者System.exit(0);!!!
}
  1. 一旦产生异常,系统会自动产生一个异常类的实例化对象
  2. 此时如果异常发生在try语句内,则会自动找到匹配的catch语句执行,如果没有在try语句内,则会将异常抛出
  3. 所有的catch根据方法的参数,匹配异常的实例化对象,如果匹配成功,则表示由catch进行处理
finally何时执行何时不执行的问题

throws

抛出异常不进行处理
主要是在方法声明上使用,表示方法中不处理异常,交由调用者处理
异常是否抛出:
如果异常是因为传参数导致异常,应该将异常抛出去,将错误抛出以后,如果不进行处理,程序崩溃报错-----RuntimeException

throw

表示在程序中认为的抛出一个异常,因为从异常的处理机制来看,所有异常一旦产生有以后,实际上抛出的就是一个异常类的实例化对象,那么对象也可以由throw直接抛出

try-catch-finally中,如果catch中return了,finally会执行么

finally中的代码会执行
执行流程:
1. 先计算返回值,并将返回值存储起来,等待返回
2. 执行finally代码块
3. 将之前存储的返回值返回出去
需注意:
1. 返回值是在finally运算之前就确定了,并且缓存了,对于基本数据类型,不管finally对该值做任何改变,返回的值都不会改变
2. finally代码中不建议包含return,因为程序会在上述的流程中提前退出,也就是说,返回的值不是try或catch中的值
3. 如果在try或者catch中停止了jvm,则finally不会执行,例如停电,或者通过System.exit(0)退出

或者catch中停止了jvm,则finally不会执行,例如停电,或者通过System.exit(0)退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值