Считается ли try / catch для каждого отдельного оператора, вызывающего исключение, анти-шаблоном?

В настоящее время я просматриваю код 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.)

8
задан Bjarke Freund-Hansen 23 January 2013 в 07:27
поделиться