------- android培训、java培训、期待与您交流! ----------
异常就是程序在运行时出现的不正常情况。异常允许我们强制程序停止运行,并告诉我们出现了什么问题,或者强制程序处理问题,并返回到稳定状态。
1、异常参数
我们用new在堆上创建异常对象。标准的异常类有两个构造器:默认构造器和接受字符串作为参数,以便把相关信息放入异常对象的构造器。
如:throw new NullPointerException(“t = null”);
异常类型的根基类是Throwable,它的子类有Error和Exception。Error是错误,不能处理的错误,而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处理。