Tengo un código que da una identificación de usuario a una utilidad que luego envía un correo electrónico a ese usuario.¿Escribes excepciones para problemas específicos o excepciones generales?
emailUtil.sendEmail(userId, "foo");
public void sendEmail(String userId, String message) throws MailException {
/* ... logic that could throw a MailException */
}
MailException
, pueden salir proyectados por una serie de razones, los problemas con la dirección de correo electrónico, los problemas con la plantilla de correo, etc.
Mi pregunta es la siguiente: Cómo se crea un nuevo tipo de excepción para cada uno de estas excepciones y luego tratar con ellos individualmente o crear una MailException y luego almacenar algo en la excepción (algo legible por computadora, no el texto de descripción) que nos permite hacer cosas diferentes en función de lo que realmente sucedió.
Editar: Como aclaración, las excepciones no son para los registros y lo que no, esto se relaciona con la forma en que el código reacciona a ellos. Para continuar con el ejemplo del correo, digamos que cuando enviamos el correo puede fallar porque no tiene una dirección de correo electrónico, o podría ser porque no tiene una dirección de correo electrónico válida, o podría fallar. etc.
Mi código querría reaccionar de manera diferente a cada uno de estos problemas (sobre todo al cambiar el mensaje devuelto al cliente, pero también la lógica real).
¿Sería mejor tener una implementación de excepción para cada uno de estos problemas o una excepción global que tuviera algo interno (un enum decir) que permitiera al código distinguir qué clase de problema era?
¿Por qué el voto a favor? ¿Qué está mal con esta respuesta? – Mnementh