Java编程中异常处理的学习记录
异常处理
一、异常定义:
- 程序执行中法神的不正常情况称为异常(不是语法错误/逻辑错误)
二、异常类型:
- (1)Error: Java虚拟机无法解决的严重问题(JVM系统内部错误、资源耗尽)
- (2)Exception: 其他因编程错误或偶然的外在因素导致的一般性问题(一般说的异常都是指Exception)
三、Exception分类:
- (1)编译异常
- (2)运行异常[RuntimeException]: 以下是常见运行异常
1 | NullPointerException(空指针异常) |
四、异常处理方式:
- (1)try-catch-finally(自行处理异常)
1 | //try-catch-finally结构: |
- try-catch注意点:
- (1)catch异常中,出现子父类关系时,父类必须在子类下面
- (2)一旦匹配到某个catch异常后,就不会再匹配其他异常,直接到finally结构中
- (3)try结构中的变量无法在外面使用,如要在外面使用,在try之前将变形声明好并赋初始值
- (4)常用的处理方法为:System.out.println(e.getMessage) 或 e.printStackTrace
- try-catch注意点:
- finallly注意点:
- (1)finally是可选的,不一定要加上去
- (2)finally一定会执行,无论catch是都会再报错,或前面出现return语句,一样会被执行
- (3)finally一般用在数据库连接,输入输出流,网络编程Socket等JVM不能自动回收的物理连接,确保一定能够关闭资源,不占内存。
- finallly注意点:
1 | //代码演示: |
(2)throws + 异常类型(抛出异常,寻求帮助,自己无法解决)
1
2
3
4
5throws + 异常类型 结构:
public void method() throws Exception{
//可能出现异常代码
}- throws 注意点:
- (1)throws出现异常只是返回一个异常对象,后续代码不再执行
- (2)throws中出现子父类关系时,子类throws异常要小于父类,并且父类如果没throws语句,子类也不能添加throws语句
- throws 注意点:
(3)throw new 异常类型() —(手动抛出异常)
1 | //代码实例: |
- throw注意点:
- 一般配合 “try-catch-finally结构” 或 “throws+异常类型” 来使用
- throw注意点:
五、额外拓展
- 自定义异常类:
- (1)继承现有的异常结构RuntimeException / Exception
- (2)提供全局变量:serivalVersionUID
- (3)提供重载构造器
1 | 实例: |
六、常见面试题
- throw 和 throws 区别:
- (1)throw 表示抛出一个异常类的对象,生成异常对象的过程。声明在方法体类
- (2)throws 属于异常处理的一种方法,声明在方法的声明处