格式化自定义错误消息的基本问题
Basic question to formatting custom error Messages
我需要一些帮助来理解此场景的最佳实践。
我有一个自定义异常 class 我创建的有 3 个 child classes.I 正在覆盖消息以满足我的需要。
现在 child classes 也需要自定义消息。我能以某种方式找到一种方法来利用 parent class 但格式不同吗?
Parent异常Class
public class customException extends RuntimeException {
String myFormat = " Custom Exception message here , %s, %s";
private String A;
public customException(String A, String message){
this.A= A;
super(message);
}
@Override
public String getMessage() {
return String.Format(myFormat, A, super.getMessage());
}
Child 异常 class 示例
public class childException extends customException {
String myFormat = " ChildException message here , %s, %s";
public customException(String A, String message){
super(A, message);
}
@Override
public String getMessage() {
return super.getMessage(); // find a way to format using the ChildClass myFormat?
}
编辑:
我目前的解决方法是这样的。
Child 异常 class 示例
public class childException extends customException {
String myFormat = " ChildException message here , %s, %s";
private String A;
public customException(String A, String message){
super(message); // have another constructor in the Parent exception class
this.A=A;
}
@Override
public String getMessage() {
return String.Format(myFormat, A, super.getMessage());
}
并且为了避免上面的 super.getMessage(),为了打印 parent 异常的格式,我正在检查 super class 中的 getMessage() 方法以查看 class 是否是 child class 的实例。不是合适的解决方案。
@Override
public String getMessage() {
if( this instanceOf childException)
return super.getMessage();
else
return String.Format(myFormat, A, super.getMessage());
}
为什么不更改 childException class.
中的 return super.getMessage() 行
而不是:
@Override
public String getMessage() {
return super.getMessage(); // find a way to format using the ChildClass myFormat?
}
尝试:
@Override
public String getMessage() {
this.myFormat = this.myFormat.append("hello");
return this.myFormat; // find a way to format using the ChildClass myFormat?
}
我需要一些帮助来理解此场景的最佳实践。
我有一个自定义异常 class 我创建的有 3 个 child classes.I 正在覆盖消息以满足我的需要。 现在 child classes 也需要自定义消息。我能以某种方式找到一种方法来利用 parent class 但格式不同吗?
Parent异常Class
public class customException extends RuntimeException {
String myFormat = " Custom Exception message here , %s, %s";
private String A;
public customException(String A, String message){
this.A= A;
super(message);
}
@Override
public String getMessage() {
return String.Format(myFormat, A, super.getMessage());
}
Child 异常 class 示例
public class childException extends customException {
String myFormat = " ChildException message here , %s, %s";
public customException(String A, String message){
super(A, message);
}
@Override
public String getMessage() {
return super.getMessage(); // find a way to format using the ChildClass myFormat?
}
编辑:
我目前的解决方法是这样的。
Child 异常 class 示例
public class childException extends customException {
String myFormat = " ChildException message here , %s, %s";
private String A;
public customException(String A, String message){
super(message); // have another constructor in the Parent exception class
this.A=A;
}
@Override
public String getMessage() {
return String.Format(myFormat, A, super.getMessage());
}
并且为了避免上面的 super.getMessage(),为了打印 parent 异常的格式,我正在检查 super class 中的 getMessage() 方法以查看 class 是否是 child class 的实例。不是合适的解决方案。
@Override
public String getMessage() {
if( this instanceOf childException)
return super.getMessage();
else
return String.Format(myFormat, A, super.getMessage());
}
为什么不更改 childException class.
中的 return super.getMessage() 行而不是:
@Override
public String getMessage() {
return super.getMessage(); // find a way to format using the ChildClass myFormat?
}
尝试:
@Override
public String getMessage() {
this.myFormat = this.myFormat.append("hello");
return this.myFormat; // find a way to format using the ChildClass myFormat?
}