点击这里给我发消息 点击这里给我发消息

Java EE 项目中异常处理

添加时间:2013-12-7
    相关阅读: 项目

  我们在定义一个新的异常类时,必须提供这样一个可以包含嵌套异常的构造函数。并有一个私有成员来保存这个“起因异常”。java 代码

  public Class ExceptionB extends Exception{

  private Throwable cause;

  public ExceptionB(String msg, Throwable ex){

  super(msg);

  this.cause = ex;

  }

  public ExceptionB(String msg){

  super(msg);

  }

  public ExceptionB(Throwable ex){

  this.cause = ex;

  }

  }

  当然,我们在调用printStackTrace方法时,需要把所有的“起因异常”的信息也同时打印出来。所以我们需要覆写printStackTrace方法来显示全部的异常栈跟踪。包括嵌套异常的栈跟踪。java 代码

  public void printStackTrace(PrintStrean ps){

  if(cause == null){

  super.printStackTrace(ps);

  }else{

  ps.println(this);

  cause.printStackTrace(ps);

  }

  }

  一个完整的支持嵌套的checked异常类源码如下。我们在这里暂且把它叫做NestedExceptionjava 代码

  public NestedException extends Exception{

  private Throwable cause;

  public NestedException (String msg){

  super(msg);

  }

  public NestedException(String msg, Throwable ex){

  super(msg);

  This.cause = ex;

  }

  public Throwable getCause(){

  return (this.cause == null ? this :this.cause);

  }

  public getMessage(){

  String message = super.getMessage();

  Throwable cause = getCause();

  if(cause != null){

  message = message + “;nested Exception is ” + cause;

  }

  return message;

  }

  public void printStackTrace(PrintStream ps){

  if(getCause == null){

  super.printStackTrace(ps);

  }else{

  ps.println(this);

  getCause().printStackTrace(ps);

  }

  }

  public void printStackTrace(PrintWrite pw){

  if(getCause() == null){

  super.printStackTrace(pw);

  }

  else{

  pw.println(this);

  getCause().printStackTrace(pw);

  }

  }

  public void printStackTrace(){

  printStackTrace(System.error);

  }

  }

[1] [2] [3] [4] 下一页

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册