[英]How to use multiple error specific parameter in custom Exception constructor parameters?
[英]Exception with multiple parameters in the constructor
我想知道在一个构造函数中创建具有多个参数的异常(与可抛出的字符串不同)是否可以,或者这种做法是否不好?
为什么我需要一个带有多个参数的异常,好吧,假设我正在分析一个矩阵,当出现错误时,我会用 position 引发异常。 我想在异常中给出明确的错误消息,并且我想使用国际化,即不同语言的消息。
例如,消息可能是:
position 4、5 有错误。
Hubo un problema en la fila 4 con columna 5。
如您所见,两条消息的文本不同,并且值对于消息很重要,以便具有描述性。
我的方法是这样的:
public class MatrixException extends Exception {
int x;
int y;
public MatrixException (int x, int y){
this.x = x;
this.y = y;
}
public String getMessage(){
return Messages.getString("MatrixException.Message1") + this.x
Messages.getString("MatrixException.Message2") + this.y
Messages.getString("MatrixException.Message3");
}
}
( Messages
class 实现了ResourceBundle
类)
有了这种异常,我可以用相应的语言创建描述性消息,但是我从未见过参数不同于 String 和 Throwable 的异常。
我试图找到有关如何编写定义良好的异常层次结构的信息,但是没有很多文档,也没有关于构造函数的信息。
你觉得我的方法怎么样?
这种方法没有错。
实际上,标准库中有一些带有构造函数的异常类,它们的参数不同于String
和Throwable
。
我想到的第一个示例是SQLException(String, String, int)
。 然后是URISyntaxException(String, String, int)
甚至EnumConstantNotPresentException(Class<? extends Enum>, String)
。
我喜欢。 您的另一个选择是格式化字符串并使用常规的Exception
构造函数,但我认为您所拥有的没问题。
当然。 如果自定义异常类中包含其他参数/字段,则如果引发异常,将更容易评估问题,请添加。
U 可以覆盖方法 toString 而不是方法 getmessage。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.