微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决格式化自定义错误消息的基本问题

我需要一些帮助来理解这个场景的最佳实践。

我创建了一个自定义异常类,它有 3 个子类。我正在覆盖消息以满足我的需要。 现在子类也需要有自定义消息。我可以以某种方式找到一种方法来利用父类但使用不同的格式吗?

父异常类

export const postCsv = sensorData => (dispatch,getState) => {

  const token = getState().auth.token;

  // Headers
  const config = {
    headers: {
      'Content-Type': "application/json"
    }
  }

  // If token exists,add to headers config
  if (token) {
    config.headers['Authorization'] = `Token ${token}`
  }

  // Post request to API
  axios.post(`${baseURL}/sensors_data/csv`,sensorData,config)
  .then(res => {
    console.log(res);
    if (res.status === 200) {
      dispatch({
        type: POST_CSV,payload: res.data
      })
    }
  })
  .catch(err => {
    console.log(err.response);
  })
} 

子异常类示例

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

编辑:

我目前的解决方法是这样的。

子异常类示例

public class childException extends customException {

String myFormat = " ChildException message here,%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? 
    }

为了避免上面的 super.getMessage(),为了打印父异常的格式,我正在检查超类中的 getMessage() 方法,看看该类是否是子类的实例。不是一个合适的解决方案。

public class childException extends customException {

String myFormat = " ChildException message here,String message){
super(message);  // have another constructor in the Parent exception class
this.A=A;
} 

@Override
public String getMessage() {
return String.Format(myFormat,super.getMessage()); 
    }

解决方法

为什么不更改 childException 类中的 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? 
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?