黑马程序员_基础复习08_异常

 ------- android培训java培训、期待与您交流! ---------- 

异常就是程序在运行时出现的不正常情况。异常允许我们强制程序停止运行,并告诉我们出现了什么问题,或者强制程序处理问题,并返回到稳定状态。

1、异常参数

我们用new在堆上创建异常对象。标准的异常类有两个构造器:默认构造器和接受字符串作为参数,以便把相关信息放入异常对象的构造器。

如:throw new NullPointerException(“t = null);

异常类型的根基类是Throwable,它的子类有ErrorExceptionError是错误,不能处理的错误,而Exception是可以被捕获的异常。

2、捕获异常

Java提供特有的语句进行异常处理:

try{

  需要被检测,尝试执行的代码

}catch(异常类 变量){

  处理异常的代码

}

finally{

  一定会执行的语句,通常用于关闭资源等。

}

捕获异常有以下三种形式:

try{..}catch(){...}   try{...}catch(){...}finally{...}   try{...}finally{...} 

3、创建自定义异常

我们可以自定义异常来处理自己的程序中可能出现的异常。

要自定义异常,必须从已有异常类继承,通常从Exception类继承。建立新异常类型最简单的方式就是让编译器为你产生默认构造器。

class SimpleException extends Exception{

}

public class InheritingExceptions {

  public void f()throws SimpleException{

    System.out.println("Throw SimpleException from f()");

    throw new SimpleException();

  }

  public static void main(String[] args) {

    InheritingExceptions sed = new InheritingExceptions();

    try{

      sed.f();

    }catch(SimpleException e){

      System.out.println("Caught it!");

    }

  }

}

编译器创建默认构造器,自动调用基类的默认构造器。

 

对捕获到的异常进行常见的操作有getMessage():获得异常信息

 toString():异常名称:异常信息

 printStackTrace():异常名称:异常信息及位置。

在方法声明出throws异常后,必须在方法体中try/catch处理,否则编译失败。

对多异常处理时,可以用多个catch来捕获异常,如果多个catch块中的异常出先继承关系,父类往下放。

4、异常在子父类覆盖中的体现

1)子类在覆盖父类时,如果父类的方法抛出异常,子类分覆盖方法,只能抛出父类的异常或该异常的子类

2)如果父类抛出多个异常,则子类在覆盖方法时,只能抛出父类异常的子集

3)如果父类或接口的方法中没有抛出异常,那么子类在覆盖方法时,也不能抛出异常。若子类方法发生异常,只能try处理。

;