繁体   English   中英

构造函数中具有多个参数的异常

[英]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 的异常。

我试图找到有关如何编写定义良好的异常层次结构的信息,但是没有很多文档,也没有关于构造函数的信息。

你觉得我的方法怎么样?

这种方法没有错。

实际上,标准库中有一些带有构造函数的异常类,它们的参数不同于StringThrowable

我想到的第一个示例是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM