Java核心类库笔记(三)

96 阅读2分钟

异常类

java.lang.Throwable类是Java语言中错误(Error)和异常(Exception)的超类。

  • Error类主要用于描述Java虚拟机无法解决的严重错误,通常无法编码解决
  • Exception类主要用于描述因编程错误或偶然外在因素导致的轻微错误,通常可以编码解决

异常的分类

java.lang.Exception类是所有异常的超类,主要分为以下两种:

  • RuntimeException - 运行时异常,也叫作非检测性异常
  • IOException和其它异常 - 其它异常,也叫作检测性异常

RuntimeException类的主要子类:

  • ArithmeticException类 - 算术异常
  • ArrayIndexOutOfBoundsException类 - 数组下标越界异常
  • NullPointerException - 空指针异常
  • ClassCastException - 类型转换异常
  • NumberFormatException - 数字格式异常 

异常的捕获

try {

  编写可能发生异常的代码; 

} catch(异常类型 引用变量名) { 

  编写针对该类异常的处理代码;

} ... finally {

  编写无论是否发生异常都要执行的代码;

try {
  wait();
} catch (InterruptedException e) {
  e.printStackTrace();
}

异常的抛出

在某些特殊情况下有些异常不能处理或者不便于处理时,就可以将该异常转移给该方法的调用者, 这种方法就叫异常的抛出。当方法执行时出现异常,则底层生成一个异常类对象抛出,此时异常代 码后续的代码就不再执行

访问权限 返回值类型 方法名称(形参列表) throws 异常类型1,异常类型2,...{ 方法体; }

public void show() throws IOException{}

方法重写的原则

  • 要求方法名相同、参数列表相同以及返回值类型相同,从jdk1.5开始支持返回子类类型
  • 要求方法的访问权限不能变小,可以相同或者变大
  • 子类重写的方法不能抛出更大的异常、不能抛出平级不一样的异常,但可以抛出一样的异常、更小 的异常以及不抛出异常

自定义异常

当需要在程序中表达年龄不合理的情况时,而Java官方又没有提供这种针对性的异常,此时就需要 程序员自定义异常加以描述

实现流程

自定义xxxException异常类继承Exception类或者其子类

提供两个版本的构造方法,一个是无参构造方法,另外一个是字符串作为参数的构造方法

public class AgeException extends Exception {
  static final long serialVersionUID = -3387516993124229947L;
  public AgeException() {}
  public AgeException(String message) {
    super(message);
  }
}