Использование кодов ошибок для выявления исключений - неплохая практика.
В производственной среде может быть очень полезно, чтобы файлы журнала были короче, а также для интернационализации сообщений об ошибках.
С другой стороны, при разработке может быть раздражающим получение кода ошибки вместо полного сообщения об ошибке со значимым описанием. Разработчик должен пойти и проверить код ошибки.
В одном из моих проектов (с использованием Java) я разработал гибридный подход. У моего корневого исключения есть конструктор, который использует класс Enum. Класс Enum содержит список кодов ошибок + сообщения об ошибках по умолчанию. Что-то вроде:
public enum ErrorCodes {
VALIDATION_ERROR(5001, "One of the objects cannot be validated"),
RESOURCE_NOT_FOUND(4004, "The requested resource does not exist"),
У корневого исключения есть и другие конструкторы, так что разработчик может переопределить сообщение по умолчанию:
public CoreException(ErrorCodes _errorCode, final String message, final Throwable cause) {
super(message, cause);
errorCode = _errorCode.getCode();
}
public CoreException(ErrorCodes _errorCode, final String message) {
super(message);
errorCode = _errorCode.getCode();
}
При обнаружении исключения обработчик исключений может принять решение (основываясь на некоторых параметрах конфигурации) записать ошибку и сообщение или только ошибку.
Более сложный обработчик ошибок может также искать сообщение на определенном языке из пакета ресурсов на основе кода ошибки.