Una solución más simple sería usar exceptions.
Cuando se produce un error que sería algo que le muestra a un usuario, ejecute un tipo especial de excepción, quizás llamado UserError
. La excepción debe contener el texto del mensaje de error cuando lo arroje. Este tipo de errores son características que proporcionan a los usuarios información útil (es decir, que intentaron borrar algo que no existía - lo que puede suceder cuando tienen varios navegadores abiertos, etc.)
por ejemplo:
throw new UserError("That object no longer exists.");
Cuando se produce un error que desea ocultar al usuario, arroje un tipo diferente de excepción, quizás llamado InternalError
. Desea registrar y permitir que el programa continúe, por lo que el error específico está oculto para el usuario. Si evita que algo suceda, es posible que desee arrojar un mensaje de error genérico. Estos serían errores y desea repararlos lo antes posible.
ej .:
throw new InternalError("Failed to connect to remote service");
Todos los mensajes de error se pueden almacenar (codificadas duro) en la fuente de donde se produce la excepción. Esto no es necesariamente una mala práctica de diseño: si utiliza una herramienta como gettext, puede traducir fácilmente todos estos mensajes.
Me gusta esa idea, la única advertencia es que si hay múltiples errores, idealmente quiero registrar el error y continuar la ejecución. De ahí por qué estaba usando setError y getError. Verifico si la declaración es verdadera, lo que significa que todas las acciones fueron exitosas y si no recibo el error. Una acción puede ser parcialmente exitosa, y como resultado me gustaría devolver el mensaje falso y usar getError para obtener un mensaje que indique qué parte no fue exitosa. Espero que tenga sentido. – Andre