java异常三(异常工厂)

java异常—异常工厂

一.概述

在我们想要捕获一个异常时,往往需要更多的异常信息。这时,我们可以将错误信息保存在单独的ErrorInfo对象中,当异常传播到调用堆栈时,代码的上层可以ErrorInfo 向错误添加其他对象。

二.ErrorInfo定义

ErrorInfo是保存异常信息的模板类,代码如下:

public class ErrorInfo {

    protected Throwable cause                = null;
    protected String    errorId              = null;
    protected String    contextId            = null;

    protected int       errorType            = -1;
    protected int       severity             = -1;

    protected String    userErrorDescription = null;
    protected String    errorDescription     = null;
    protected String    errorCorrection      = null;

    protected Map<String, Object> parameters = new HashMap<String, Object>();
}

ErrorInfo调用:

public class AppException extends Exception {

  protected List<ErrorInfo> errorInfoList = new ArrayList<ErrorInfo>();


  public AppException() {
  }

  public ErrorInfo addInfo(ErrorInfo info){
    this.errorInfoList.add(info);
    return info;
  }

  public ErrorInfo addInfo(){
    ErrorInfo info = new ErrorInfo();
    this.errorInfoList.add(info);
    return info;
  }

  public List<ErrorInfo> getErrorInfoList() {
    return errorInfoList;
  }
}

也可根据具体情况对其信息进行修改。
ErrorInfo工厂:

public class ErrorInfoFactory {

    public static final ErrorInfo getFileReadErrorInfo(
        IOException e, String filePath) {

        ErrorInfo info = new ErrorInfo();
        info.setCause(e);
        info.setErrorId("FileReadFound");
        info.setContextId("FileLoader");

        info.setErrorType(ErrorInfo.ERROR_TYPE_INTERNAL);
        info.setSeverity(ErrorInfo.SEVERITY_ERROR);

        info.setErrorDescription("Error processing file" + filePath);

        return info;
    }
}

工厂调用:

try{
    FileInputStream fileInputStream = new FileInputStream(filePath);
} catch (IOException e) {
    AppException exception = new AppException();    
    exception.addInfo(
    ErrorInfoFactory.getFileReadErrorInfo(e, filePath) );
    throw exception;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值