Ang*_*ocA 5 java parameters constructor overriding exception
我想知道是否可以在一个构造函数中创建一个具有多个参数的异常(与throwable,string不同)或者这种做法是否错误?
为什么我需要一个带有多个参数的异常,好吧,假设我正在分析一个矩阵,当出现错误时,我会用该位置引发异常.我想在异常中给出一个明确的错误消息,我也想使用国际化,即不同语言的消息.
例如,消息可以是:
位置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");
}
}
Run Code Online (Sandbox Code Playgroud)
(Messages该类实现了ResourceBundle该类)
有了这种异常,我可以用相应的语言创建描述性消息,但是我从未见过参数与String和Throwable不同的异常.
我试图找到有关如何编写明确定义的异常层次结构的信息,但是没有很多文档,也没有关于构造函数的信息.
您如何看待我的方法?
这种方法没有错.
实际上,标准库中有一些异常类,其构造函数的参数与String和不同Throwable.
想到的第一个例子是SQLException(String, String, int).然后是URISyntaxException(String, String, int)甚至是EnumConstantNotPresentException(Class<? extends Enum>, String).