Из моего опыта коды исключений используются в основном как информационное сообщение для пользователя.
Я ни разу не видел, чтобы кто-то пытался проанализировать общее сообщение об исключении, чтобы по-разному реагировать, зависит от кода ошибки, обычно это делается через иерархию исключений.
С другой стороны, может быть сложно создать новый подкласс исключений для каждого конкретного случая, а затем использовать коды исключений.
Например, если для пользовательского кода он не измеряет причину сбоя транзакции, он должен каким-либо образом откатить ее, но для конечного пользователя важно, почему это произошло (неправильные параметры, соединение с базой данных или другое).
Итак, подведем итог: если вы ожидаете разных способов обработки разных ситуаций, лучше использовать разные типы исключений, но если вам нужно обрабатывать несколько проблем одним и тем же способом, а только уведомлять пользователя о конкретной причине, проще использовать исключение. коды.