2011-10-10 13 views
5

Me gustaría saber si está bien crear una excepción con múltiples parámetros en un constructor (diferente de throwable, string) o si esta práctica es mala?Excepción con múltiples parámetros en el constructor

¿Por qué necesito una excepción con múltiples parámetros, bueno, supongamos que estoy analizando una matriz, y cuando hay un error, haré una excepción con la posición. Me gustaría dar un mensaje de error claro en la excepción, y también me gustaría utilizar la internacionalización, es decir, los mensajes en diferentes idiomas.

Por ejemplo, los mensajes podrían ser:

Hay un error en la posición 4, 5.
Hubo ONU Problema en La Fila 4 con columna 5.

Como puede ver, el texto es diferente para ambos mensajes, y los valores son importantes para el mensaje para ser descriptivo.

Mi enfoque es algo como esto:

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

(La clase Messages implementa la clase ResourceBundle)

Con este tipo de excepción, que podría crear un mensaje descriptivo en el idioma correspondiente, sin embargo, nunca he visto Excepciones con parámetros diferentes de Cadena y Decapable.

He intentado encontrar información sobre cómo escribir una jerarquía de excepciones bien definida, pero no hay mucha documentación ni nada sobre los constructores.

¿Qué opinas sobre mi enfoque?

+0

¿Qué tal si lo intentas y ves si funciona? SO es generalmente para preguntas concretas sobre problemas concretos, en lugar de reflexiones ociosas sobre qué pasaría si. –

Respuesta

0

Me gusta. Su otra opción sería formatear la cadena y usar el constructor normal Exception, pero creo que lo que tiene está bien.

0

Sure. Si tiene parámetros/campos adicionales en su clase de excepción personalizada, será más fácil evaluar un problema si se lanza la excepción, agréguela.

Cuestiones relacionadas