Когда у вас есть оператор switch, вы менее объектно-ориентированы. Есть также больше возможностей для ошибок, забыв о выражении "break;
", забывая добавить регистр для Exception
, если вы добавляете новый брошенный Exception
.
Я также нахожу, что ваш способ сделать это НАМНОГО более читабелен, и это стандартная идиома, которую сразу поймут все разработчики.
На мой вкус, недопустимое количество кода, используемого вашим знакомым, количество кода, не имеющего ничего общего с обработкой исключений. Чем больше стандартного кода вокруг вашей реальной программной логики, тем сложнее его читать и поддерживать. А использование необычной идиомы усложняет понимание кода.
Но, как я уже говорил выше, нарушитель соглашения заключается в том, что когда вы изменяете вызываемый метод так, чтобы он выбрасывал дополнительный Exception
, вы автоматически будете знать, что вам нужно изменить свой код, потому что он не сможет скомпилироваться. Однако, если вы используете метод вашего знакомого и изменяете вызываемый метод для выдачи нового сорта AppException
, ваш код не будет знать, что в этом новом разнообразии есть что-то другое, и ваш код может молча потерпеть неудачу из-за неправильной ошибки. обработка ног. Это предполагает, что вы на самом деле не забыли установить значение по умолчанию, так что, по крайней мере, оно обрабатывается и не игнорируется.