Пример обработки ошибок с помощью оператора goto


Исходный код

string status = ProcessData("db1");
if (status == "ERROR") goto ErrorOccured;
status = ProcessData("db2");
if (status == "ERROR") goto ErrorOccured;
status = ProcessData("db3");
if (status == "ERROR") goto ErrorOccured;
if (status == "OK") goto NoError;

ErrorOccured:
    tran.Rollback();
    return status;
NoError:
    tran.Commit()

Что не так в исходном коде

Исключения уже изобрели, а применение оператора goto уголовно наказуемо (шутка). Про исключения не шутка.