Java中异常处理机制的理解与应用
作者:互联网
异常
客观角度:不符合现实生活的各种情况,都可以理解为是异常 Java语言角度:在代码的运行过程中,出现的各种错误导致程序停止运行,那么这些错 误就是异常。
- 注意:异常在程序种是通过一个个对象来表示 和异常相关的类型: Throwable 该类型是所有异常类的父类 Error:错误 一般表示比较严重的问题,一旦出现该问题,无法通过代码解决 Exception:异常 一般表示比较轻微的问题,如果程序种出现异常,可以通过代码来处理或者解决该异常。 编译时异常:除了运行时异常,其他类型都是编译时异常 运行时异常:RunTimeException 类型以及 它的子类类型
编译型异常和运行时异常
- 编译时异常:在代码编译阶段,系统会检查代码的语法格式等情况,如果在检查的过程中出现了问题,就提示一个错误,这些问题就属于编译时异常。 运行时异常:在代码编译阶段不对代码进行检查,但是在代码运行阶段,如果出现了一些导致程序意外终止的问题,这些问题就属于运行时异常。 注意: 不管是编译时异常还是运行时异常,都只会在运行阶段出错。
JAVA虚拟机默认处理异常的方式
- 如果在代码中的某个方法内出现了错误情况,系统会将这个错误发生的原因,发生异常类型,发生的路径封装到异常对象中。 如果当前方法中没有处理这个异常对象,就将异常往上抛出,抛给调用该方法的方法。 如果调用的方法也没有处理异常,那么就一层一层往上抛出,直到抛给main方法,main方法再抛给虚拟机 虚拟机将当前异常对象通过标准错误流,打印到控制台,并结束自己。
代码:
手动处理异常的方式
- 异常声明 异常捕获
异常声明
如果在某个方法中出现了编译时异常,可以在当前方法上声明这个异常的类型,声明之后编译时异常就会消失。
- 声明异常的格式:
修饰符 返回值类型 方法名称 (参数列表)throws 异常类型1,异常类型2…{ 方法体语句; }
- 注意事项: 异常的声明,不能从本质上解决问题,只能在编译阶段不检查这段代码 如果后续传入一些错误的数据,在运行阶段也可能会发生错误。 如果方法1中进行了异常的声明,方法2调用了方法1,那么方法2需要对该异常进行捕获或者处理。 在声明异常的时候,尽量声明小的异常类型
public static void main(String[] args) throws ParseException{ test(); } public static void test() throws ParseException { SimpleDateFormat sim = new SimpleDateFormat(); Date date = sim.parse("2022年2月28号"); System.out.println(date); }
异常的捕获
如果代码的某个位置会出现了错误情况,可以使用特定的格式,捕获这个 错误,捕获之后可以按照自己定义的方式去处理异常。
- 格式: try … catch try … catch … finally try … finally
try … catch
try{ 可能会出现错误的代码 }catch(异常类型 异常对象名称){ 处理异常的方式