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;
}