异常定义:运行期间出现的错误,而不是编译时的语法错误。
异常体系结构
Error类:特指应用程序在运行期间发生的严重错误。内存用尽,堆栈溢出
Exception类:RuntimeException运行时异常(非检查性异常)编译时不会报错,运行时才会报错
IOException为代表的一些为检查性异常。指的是在编译时是否检查,如果存在检查性异常,必须进行异常处理,否则不通过编译。
异常处理机制
两种处理方式:
- 自行处理:将可能引发异常的语句封装在try块内,而处理异常的相应语句则封入在catch块内。
- 回避异常:在方法声明中包含throws子句,通知潜在调用者,如果发生异常,由调用者处理
catch捕获异常范围由小到大
finally语句不管异常捕获与否都执行,用来进行资源的清除(在try或catch中执行system.exit(0)时,finally不执行)
throws关键字
位置:参数列表的后面
throws关键字后边,可以跟多个异常,中间用问号隔开
throws抛出的异常,由调用该函数的函数处理
throw语句不能单独使用,要么和throws要么和try。。catch
自定义异常
继承Exception类