У меня в настоящее время есть техническая разница со знакомым. В двух словах, это разница между этими двумя основными стилями обработки исключений Java:
Вариант 1 (мой):
try {
...
} catch (OneKindOfException) {
...
} catch (AnotherKind) {
...
} catch (AThirdKind) {
...
}
Вариант 2 (его):
try {
...
} catch (AppException e) {
switch(e.getCode()) {
case Constants.ONE_KIND:
...
break;
case Constants.ANOTHER_KIND:
...
break;
case Constants.A_THIRD_KIND:
...
break;
default:
...
}
}
Его аргумент - после того, как я использовал обширные ссылки о проверке пользовательского ввода, обработке исключений, утверждениях и контрактах и т. Д. Для подтверждения своей точки зрения - сводился к следующему:
"Это хорошая модель. Я использовал ее с тех пор, как я и мой друг придумали ее в 1998 году, почти 10 лет назад. Посмотрите еще раз, и вы увидите, что мы пошли на компромиссы с академическими аргументами иметь много смысла. "
Есть ли у кого-нибудь аргумент о том, почему вариант 1 - это путь?