简单说说Java中的异常处理机制的简单原理和应用
异常指Java程序运行时(非编译)所发生的非正常情况或错误;
所有异常的根类为java.lang.Throwable;
Throwable派生了2个子类:Error和Exception
异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性;
Java异常的处理主要依赖于try,catch,finally,throws,throw这五个关键字
使用try…catch捕获异常
先执行try 块中的代码,如果正常运行没有发生异常则执行完后执行finally 代码块中的代码;如若在try 中发生异常且被catch 捕捉到则执行catch 中的代码块,然后执行finally 块中的代码;
存在以下4种特殊情况,finally块不会被执行:
- 在前面的代码中使用了System.exit()退出程序;
- 在finally语句块中发生异常;
- 程序所在的线程死亡;
- 关闭CPU;
使用throw(s)抛出异常
throws:通常被用在声明方法时,用来指定方法可能抛出的异常,多个异常可使用逗号分隔。throws关键字将异常抛给上一级,如果不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码
throw:通常用在方法体中或者用来抛出用户自定义异常,并且抛出一个异常对象。程序在执行到throw语句时立即停止,如果要捕捉throw抛出的异常,则必须使用try-catch语句块或者try-catch-finally语句
自定义异常处理
- 定义自定义异常类,继承至某个Exception类,重写其中构造方法。
- 在代码中检测到某个条件成立,需要抛出异常的位置,使用throw 语句抛出自定义异常类的实例
- 在代码所在的方法后面,添加throws 字句,表示方法有一个自定义异常类型的异常信息需要处理
- 在方法的调用者处理异常信息。