一、概述
- java中有异常处理机制。在java程序设计语言中,异常对象都是派生自java.lang.Throwable类,Throwable下两个子类Error和Exception,在Exception又分为派生自RuntimeException和非派生自RuntimeException。
- 派生自Error(不可控制,无能为力)的所有错误与RuntimeException(避免发生,你自身的问题,必须解决)类的所有异常称为非受检查异常(unchecked)所有其他异常称为受检查异常,送给异常处理器。
- 我们只需要关注的是在类所属关系上是非派生自RuntimeException的异常(即在内容上是受检查的异常)。
二、声明受检查异常
- 声明受检查异常格式:public FileInputStream(String name)throws FileNotFoundException{}
- 声明受检查异常注意点:
- 子类方法中声明的受查异常不能比超类方法中声明的异常更通用。即子类受查异常应声明的更加特定或不进行声明。
- 如果超类没有抛出异常,子类也不可以抛出异常。
三、如何抛出异常
- 格式:
- 方法名(方法参数列表) 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()(获得异常对象的实际类型)