异常不是逻辑上的不合理
解决逻辑上的不合理需要在开发及测试期间发生RuntimeException。
try/catch用于处理真正的异常,无法预防的失败情况,如文件、服务器等。
异常的来源:
自己写的某个方法可能会出现异常,用throws声明并抛出
调用某方法可能由异常(在文档的类方法的throws处由指出)
处理异常的大概思路:
public void takedisk() throws BadException{//声明有异常会抛出
if(abandonAllHope){
throw new BadException();//创建异常对象并抛出
}
}
public void cross{
try{//有风险的程序放在try块
a.takedisk();
}catch(BadException ex){//catch捕获异常状态,并尝试恢复
System.out.println("aaargh");
ex.printStackTrace();
}finally{
trunovenoff();
}
}
方法可以抛出多个异常,catch不同的错误有不同的处理方式。可以以异常的父型来声明抛出,但是注意错误范围的顺序很重要,将大的范围放在最下面,因此一旦catch到某个错误,其它的catch将不再作检查了。