异常
错误和异常的区别
异常
- 在程序执行的过程中产生的问题
- 编译期异常(检查异常)
- 运行时错误
错误
- 语法错误(编译期)
- 运行时错误(不报错,硬件问题和环境问题)
- 逻辑错误(算法问题,运行期)
运行时异常的处理方式
- 修改源代码,将异常避免掉
- 使用异常捕获机制,(try,catch)
try
正常逻辑下可以出现异常的代码
catch
异常处理语句
- 当try后面有多个catch捕获的异常有几成关系是,必须遵照子类catch写前面,父类catch写后面;
finally
- 不管是否发生异常,都要执行的代码,往往是资源的回收,内存的清理,通道的关闭等都要用:
编译时异常的处理方式
指一个方法在声明部分书写throws ~~Exception;以至于调用者在编译器搜到警告,(编译不通过)强制要求调用者警用处理
- throws后面是异常类名,而且可以是多个类名(逗号隔开),表明方法有可能发生异常;
- throw后面跟的是异常对象,只能跟一个对象,一旦执行到throw这句代码,一定会发生异常
- 子类重写方法中不能比父类被重写方法抛出更多的异常(这里的更多表示的是范围)
- 如果throw后面的异常对象是编译时异常,那么该方法声明跟后面必须要throws
- 如果throw后面的异常对象是运行时异常,那么该方法声明跟后面可以不需要加throws