Сейчас у нас минималистичная иерархия исключений, так как не очень понятно как все многообразие ошибок правильно делить на исключения. Кроме того собственные уникальные логические ошибки, назначают сообщение пользователю на русском прямо по месту. По хорошему они все должны быть переведены. Но для этого стоит разобраться с системой построения иерархии, а так же как это все положить в файл переводов так, чтобы было сразу понятно что где и легко и понятно добавлять туда перевод для каждого нового исключения и места его генерации с уникальной логчической ошибкой.
Порождена tndt-3 как её логическое продолжение и развитие
Надо сделать абстрактной класс исключений, умеющих сложно переводиться, которые пакуют инфу, необходимую для перевода в message, чтобы протащить сквозь
FlattenException(он же статикой будет их распаковывать в код message и связанную с ним инфу). К сожалению заFlattenException, не выйдет сделатьinstanceofпридется вErrorCodesEnum::hasCustomMessage()сравниватьFlattenException::getClass()по набору классов (или инстанцировать фейковый инстанс исключения ради проверки его на instanceof)