1.catch和throw同时使用,可以对异常进行两次处理。第一次在方法中用catch块进行处理,第二次通过throw把异常抛出,由方法的调用者进行处理。
2.这种通过catch和throw同时使用,可以很好的将原始异常(程序员所要关注的)和业务异常(客户所关心的)分开,也有利于实现异常链
3.异常链:捕获一个异常,并且抛出另一个异常,并把原始异常保存下来是一种典型的链式处理,也称为异常链。throwable的子类在构造器中都可以接受一个cause对象作为参数。这个cause对象就是用来表示原始异常的,这样就可以把原始异常传递给新的异常
public class TestAuction
{
private double initPrice=30.0;
public void bid(String bidPrice) throws AuctionException{
double d=0.0;
try{
d=Double.parseDouble(bidPrice);
}
//catch块处理异常,打印出该异常的跟踪信息,然后再抛出AuctionException,
//通知方法调用者(main)处理该异常
catch(Exception e){
e.printStackTrace();
throw new AuctionException("竞拍价必须是数值,不能有其他字符");
}
}
public static void main(String[] args)
{
TestAuction ta=new TestAuction();
try{
ta.bid("fuck");
}
catch(AuctionException ae){
//打印出异常信息
System.out.println(ae.getMessage());
}
}
}