java自定义异常使用占位符传参
举例:
“姓名:{0},年龄:{1},年龄不足18”,错误信息为:“姓名:张三,年龄:11,年龄不足18”
MyException类
public class MyException extends RuntimeException {
private String msgFormat; // 错误信息
private Object[] msgParams; // 错误参数
public MyException(String msg) { // 如果不传参数,直接调用父类构造方法
super(msg);
this.msgFormat = msg;
}
public MyException(String msg, Object... msgParams) {
this.msgFormat = msg;
this.msgParams = msgParams;
}
@Override
public String getMessage() {
if(StringUtils.isNotBlank(getMsgFormat())){
if(msgParams!=null && msgParams.length>0){
return MessageFormat.format(msgFormat, msgParams);
}
}
return super.getMessage(); // 如果不传参数,直接调用父类方法
}
// 省略getter、setter
}
测试:
public static void main(String[] args) {
try {
throw new MyException("姓名:{0},年龄:{1},年龄不足18","张三",11);
}
catch (Exception e){
e.printStackTrace();
}
throw new MyException("姓名:{0},年龄:{1},年龄不足18");
}
输出