Siempre controlo los argumentos de las funciones públicas y lanzo excepciones cuando algo anda mal. (Para ayudantes privados, uso aserciones).¿Mensaje de excepción IllegalArgumentException automatizado?
De esta manera:
if(a < 0 || a >= b)
throw new IllegalArgumentException("'a' must be greater or equal to 0 and
smaller than b ");
Pero siempre me molesta para escribir estos mensajes de error. El mensaje me parece redundante, ya que el mensaje es solo la negación de la declaración
a < 0 || a >= b
.
También sucede a menudo que cambio el nombre de la variable con la refactorización (en eclipse) y luego el mensaje no refleja los cambios. O cambio las condiciones y me olvido de cambiar los mensajes.
Sería muy bueno, si podría escribir algo como:
assertArgument(a >= 0 && a < b);
Esto debería plantear una IllegalArgumentException con un mensaje como
"violated argument assertion: a >= 0 && a < b."
En C se podría escribir una macro (en realidad en C assert es solo una macro). ¿Hay alguna manera simple de hacer algo como esto en Java?
¡Gracias!
Puede generar código Java durante la construcción ... pero el dolor no vale la pena. Tu problema no es mortal, siempre que puedas identificar una línea, estarás bien. También puede escribir un script de Python para revisar el código y verificar si hay inconsistencias. –
¿Qué le parece crear una función auxiliar 'checkParam (param, paramName)'? Luego, incluso después de cambiar el nombre de las variables, aún puede instalar una secuencia de comandos rápida de Python para buscar todas las instancias de checkParam y asegurarse de que sean kosher. Quizás alguien más pueda ampliar esta idea. –
Incluso podría usar la reflexión en el modo de depuración. –