Java基础08-异常处理

异常的处理

1.JVM 的默认处理

把异常的名称,原因,位置等信息输出到控制台,但是程序不能再继续执行了

2.自己处理

  • try…catch…finally:自己编写处理代码,后面的程序可以继续执行
  • throws:把自己处理不了的在方法上申明,告诉调用者这里有问题

编译期异常和运行期异常的区别

编译期异常:必须要处理,否则编译不通过

运行期异常:可以不处理,也可以处理

throw和throws的区别

throw:

在方法体中,后面跟的是异常对象名,并且只能是一个

throw抛出的是一个异常对象,说明这里肯定有一个异常产生了

throws:

在方法声明上,后面跟的是异常的类名,可以是多个,用逗号隔开

throws是声明方法有异常,是一种可能性,这个异常不一定产生

finally关键字

特点:被finally控制的语句体一定会执行(除非在执行finally之前jvm退出了【 system.exit(0) 】)

作用:用于释放资源,在IO流操作和数据库操作中会见到

final和finally和finalize的区别:

  • final:最终的意思,修饰类,类不能被继承;修饰变量,变量是常量(必须初始化且不能被修改);修饰方法,方法不能被重写
  • finally:是异常处理的一部分,用于释放资源,一般来说,代码一定会执行
  • finalize:是object类的一个方法,用于垃圾回收

如果try里面有return语句,finally的代码还会执行吗?

会执行,并且finally的执行早于return

  1. 不管是否出现异常,finally块的代码都会执行
  2. 当try和catch中有return时,finally仍然会执行
  3. finally是在return后面的表达式运算后执行的【此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码,返回的值都不会改变,仍是之前保存的值】,所以函数返回值是在finally执行前确定的
  4. finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值

Java提供的异常类

Throwable(所有错误与异常的超类):

  • Error:此类错误一般表示代码运行时 JVM 出现问题,非常严重的错误,且该错误是不可恢复的,这种错误会导致程序终止执行,按照Java惯例,我们是不应该实现任何新的Error子类的!

  • Exception:可恢复的异常,是编译器可以捕捉的,包含检查异常和运行时异常

    • 检查异常:编译器强制程序去捕获此类型的异常,把异常代码放在try块中,处理代码放在catch块中
    • 运行时异常:编译器没有强制对其进行捕获并处理。常见的有:NullPointerException(空指针异常),ArrayIndexOutOfBoundsException(数组越界异常)
常见的 RuntimeException 有哪些?
  • ClassCastException(类转换异常)
  • IndexOutOfBoundsException(数组越界)
  • NullPointerException(空指针)
  • ArrayStoreException(数据存储异常,操作数组时类型不一致)
  • IO操作的BufferOverflowException异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值