一、概述

  1. java中有异常处理机制。在java程序设计语言中,异常对象都是派生自java.lang.Throwable类,Throwable下两个子类Error和Exception,在Exception又分为派生自RuntimeException和非派生自RuntimeException。
  2. 派生自Error(不可控制,无能为力)的所有错误与RuntimeException(避免发生,你自身的问题,必须解决)类的所有异常称为非受检查异常(unchecked)所有其他异常称为受检查异常,送给异常处理器。
  3. 我们只需要关注的是在类所属关系上是非派生自RuntimeException的异常(即在内容上是受检查的异常)。

二、声明受检查异常

  1. 声明受检查异常格式:public FileInputStream(String name)throws FileNotFoundException{}
  2. 声明受检查异常注意点:
  • 子类方法中声明的受查异常不能比超类方法中声明的异常更通用。即子类受查异常应声明的更加特定或不进行声明。
  • 如果超类没有抛出异常,子类也不可以抛出异常。

三、如何抛出异常

  1. 格式:
  • 方法名(方法参数列表) throws 异常类名{

                    throw new 异常类名();

                     }

  2.抛出异常步骤

    1)找到一个合适的异常类;

    2)创建这个类的一个对象;

    3)将对象抛出。

  3.创建异常类:有时候我们并不能找到一个合适的异常类,我们又想抛出异常怎么办呢?创建自己的异常类就是必行的一件事情了。下面介绍创建自己异常类的一般要求。

    1)定义一个派生于Exception的类,或者派生于Exception子类的类

    2)定义两个构造器,一个是默认的构造器,一个是带有详细描述信息的构造器。

需要注意一下的java.lang.Throwable中有Throwable()和Throwable(String message)以及String getMessage()三个关于此处的方法。

四、捕获异常

书中说有些异常必须捕获,特么这是废话,那么是是那些异常呢?

通常我们应该捕获那些知道如何处理的的异常,将那些不知道如何处理的异常继续进行传递。

必须捕获的异常是:为了使子类能够抛出比父类更加特定的受查异常时,就必须使用捕获异常的方法。

捕获异常的常用格式:

允许有多个catch语句捕获不同的异常

e.getMessage()(获得详细异常信息)与e.getClass().getName()(获得异常对象的实际类型)