Простым решением было бы использовать exceptions.
При возникновении ошибки, которая будет отображаться пользователем, бросьте специальный вид исключения - возможно, с именем UserError
. Исключение должно содержать текст сообщения об ошибке при его броске. Такие ошибки являются функции, которые предоставляют пользователям полезную информацию (т.е. они пытались удалить то, что не существует - что может случиться, если у них есть несколько браузеров открытыми, и т.д.)
например:
throw new UserError("That object no longer exists.");
При возникновении ошибки, которую вы хотите скрыть от пользователя, введите другой вид исключения, возможно, названный InternalError
. Вы хотите, чтобы log это и разрешить программе продолжать, поэтому конкретная ошибка скрыта от пользователя. Если это предотвратит что-то, вам может потребоваться генерировать общее сообщение об ошибке. Это были бы ошибки, и вы хотите исправить их как можно скорее.
.:
например
throw new InternalError("Failed to connect to remote service");
Все сообщения об ошибках могут быть сохранены (жестко) в источнике, где выбрасывается исключение. Это не обязательно плохой дизайн - если вы используете такой инструмент, как gettext, вы можете легко перевести все эти сообщения.
Мне нравится эта идея, единственное предостережение - если есть несколько ошибок, в идеале я хочу записать ошибку в продолжение выполнения. Поэтому почему я использовал setError и getError. Я проверяю, является ли возвращение истинным, что означает, что все действия были успешными, а если нет, я получаю ошибку. Действие my будет частично успешным, и в результате я хотел бы вернуть false и использовать getError для получения сообщения о том, какая часть была неудачной. Надеюсь, что имеет смысл. – Andre