Java异常处理

1 异常概念

  1. 在程序执行过程中,出现非正常情况,最终会导致JVM的非正常终止
  2. 在Java面向对象中,异常本身也是一个类
  3. 异常并不是指语法错误,语法错误编译不通过

1.1Error

严重错误,无法通过处理去解决,程序员不能处理,只能避免,相当绝症

1.2 Exception

继承自Throwable
异常产生后,程序员可以通过代码的方式纠正,使用程序继承运行,是必须要进行的处理

2 异常体系

  1. 根类 java,long.Throwable有两个子类
    error和Exception

2.1 常用方法

  1. public void printStackTrace(); //打印异常常用信息

3 异常分类

  1. 编译期异常:checked异常。在编译时期如果没有处理则编译失败
  2. 运行期异常:runtime异常,在运行时期出现异常

4 异常产生过程解析

4.1产生原理

  1. 程序执行时,碰到代码的异常
  2. 交给JVM,异常处理的代码,如果有,抛出异常,如果没有,显示异常信息。
  3. 显示异常的名称,内容和位置

5 异常处理

5.1 异常处理的五个关键字

try catch finally throw throws

throw抛出异常

在编译程序时,我们必须要考虑程序出现的问题比如调用方法时,方法接受参数,那调用此方法时,必须先对此参数数据类型进行合法判断,数据不合法就要告诉调用者,传入合法的参数
throw new 异常类型(参数)
throw new NullpointerException(“要访问的数组不存在”);
throws new ArrayIndexOutOfBoundsException(“该索引超出范围”)
总结
如果产生问题,throw将问题描述并抛出,并不处理,由调用者处理

  1. 进行捕获
  2. 继承将问题声明出去

throws声明异常

将问题标识出来报告给调用者
throws运用在方法声明上,提醒方法调用者来处理异常
格式
方法名()throws 异常1throws异常2{}

try catch捕获异常

语法

try{
     
//编写可能出现问题的代码
}catch(异常的类型 e){
     
//记录或打印异常信息
}
try catch finally

finally无论是否发生异常都执行
因为异常引发程序的跳转,导致有些语句无法执行,但在fianll代码块中存放的代码一定会执行

try{
     
//打开物理文件资源
}catch{
     
}finally{
     

}

注意事项

  1. 多个异常分别处理
try{
     
}catch(异常1){
     
}catch(异常2){
     
}
  1. 运行时异常,可以处理可以不处理
  2. 如果父类抛出多个异常,子类在重写父类方法时,抛出和父类相同的异常
  3. 父类方法没有抛出异常,子类在重写父类方法时,子类产生异常只能捕获异常,不能声明
  4. 自定义异常,根据自己的业务来定义异常比如年龄负数,成绩负数
    定义方法
    1自定义编译异常:继承自java.lang.Exception
    2自定义运行期异常 继承自java.lang.RunTimeException

你可能感兴趣的:(Java异常处理)