如何解决格式化自定义错误消息的基本问题
我需要一些帮助来理解这个场景的最佳实践。
我创建了一个自定义异常类,它有 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 举报,一经查实,本站将立刻删除。