В настоящее время я просматриваю код Java коллег, и я вижу много случаев, когда каждый отдельный оператор, который может вызвать исключение, инкапсулируется в его собственном try / catch. Где все блоки catch выполняют одну и ту же операцию (какая операция не имеет отношения к моему вопросу).
Мне это кажется запахом кода, и я действительно помню, как читал о том, что это обычный анти-шаблон. Однако я не могу найти никаких ссылок на это.
Итак, try / catch для каждого отдельного оператора, который вызывает и исключение, считается анти-шаблоном, и каковы аргументы, поддерживающие это?
Построенный пример: (Не относится к исходной проблеме, поэтому, пожалуйста, не обращайте внимания на другие проблемы с этим примером, так как он построен только для иллюстрации того, что я имею в виду.)
public int foo()
{
int x, y = 7;
try
{
x = bar(y);
}
catch(SomeException e)
{
return 0;
}
try
{
y = baz(x,y);
}
catch(SomeOtherException e)
{
return 0;
}
/* etc. */
return y;
}
(Предположим, что здесь уместно поймать оба исключения, т. Е. Мы знать, что с ними делать, и в обоих случаях целесообразно вернуть 0.)