java异常
什么是异常
我们在编写程序的时候,难免会出现Bug,这些bug就是异常。这些异常的发生往往会中断程序的运行。
异常的分类(Exception)
编译时异常
在编译器编辑的时候就发现的异常,通常编译器会会报红
- 这种也称之为可检测的异常
- 必须要处理
运行时异常
- 编译可以正常的通过,但是运行会报错。比如:空指针异常,数组下标越界等等…..
- 这种也称之为未检测的异常,不一定会触发
- 可处理也可以不用处理
处理异常
积极处理:捕捉异常
try…catch
语法
1 | try{ |
try和catch不能单独使用
选择异常种类时,尽量明确异常的种类,少使用exception
未使用捕捉
使用捕捉
try…catch…catch
捕捉多个异常,因为一个try可能会不止一个异常,这时候需要多个catch进行解决
1 | try{ |
像else if一样,异常会根据catch()括号里面的异常类型来选择进入哪个catch。
要注意一个点,父类异常类如果在第一个catch,那么子类异常类就不能往后写了
1 | try{ |
因为Exception是a的父类,exception包含了a的异常类,所以异常发生的时候,会先进入父类,会造成子类完全访问不到
try…catch…finally
1 | try{ |
try无论捉没捉到异常,finally里面的语句都会被执行
try….with….resources(自动回收)
一般像普通程序捕捉异常,会手动回收异常类,调用close方法
如果用了resources语法,则可以不用手动回收
1 | try(需要回收的对象){ |
消极处理
通过throw来将异常抛出,谁调用谁处理
如果抛出的是RuntimeException异常类,则可以处理也可以不处理
尽量使用积极处理
throw和throws
throw new 异常类
- throws用在函数声明上,后面可以跟多个异常类,用逗号隔开
- throw后跟的是异常对象
throw如果手动引发一个编译时的异常,那么该异常就一定要处理!
如果是引发的一个运行时的异常,那么该异常可处理也可以不用处理
自定义异常
除了使用系统自带的异常规则,我们也可以自己去建立异常规则。
比如系统计算数学,0不能作为除数,而我们想加一条规则,负数不能作为除数,这个时候就要用到自定义异常了
1 | public class MyException extends 异常类{ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 朝辞!





