java编程思想(八)总结

第九章 异常机制

9.1 基本异常

异常情形指引发制止当前方法或者作用域继续执行的问题。

异常处理流程:当异常发生时java会使用new在堆上创建异常对象,然后从当前运行环境抛出异常对象的引用,执行异常处理。

所有的标准异常类均有两个构造器,一个是缺省构造器,一个是接受字符串为参数(异常信息)的构造器。

Throwable是根异常类

 

9.2 捕获异常

try{

... //可能出现异常的程序段,即被监视段

}

catchException e{  //捕获特定的异常对象,执行相应的异常处理,System.err.print打印标准错误信息

e.printStackTrace(); //打印从方法调用处直到异常抛出处的方法调用序列

}

 

9.3 创建自定义的异常

例:

class MyException extends Exception{

public MyException(){};

public MyException(String msg){super(msg);}

public String getMessage(){   //覆盖Throwable.getMessage()方法

return super.getMessage();  

}  

}

 

9.4 异常说明

例:

void f() throws Toobig,Toosmall,...{}//异常说明即告诉编译器此方法可能出现的异常

 

9.5 捕获所有异常

try{

throw new Exception(“My Exception”);

}

Catch(Exception e){

System.err.print(e.getMessage());  //打印详细错误信息

System.err.print(e.getLocalizedMessage());  //打印详细错误信息

System.err.print(e.printStackTrace()); //打印调用栈轨迹

throw e.fillInStackTrace();  //抛出新异常,调用栈信息更新其返回的是Throwable引用则方法或者main中必须要有Throwable的异常说明。

}

垃圾回收器会清理异常对象

Throwable的子类只有Error(编译时和系统错误)、Exception(可抛出的异常)、RuntimeException(自动被java虚拟机抛出,不必在异常说明中,若没被捕获则在程序退出前调用printStackTrace())带有cause的构造器,如果把异常链接起来应使用initCause()方法

 

9.6 使用finally清理

finally{  //无论怎样均能执行

}

 

9.7 异常限制

当覆盖方法时,只能抛出基类方法的异常说明中的异常

 

9.8 异常匹配

异常处理系统会寻找最近的处理程序,派生类对象同样可以匹配基类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值