格式化自定义错误消息的基本问题

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