Поиск

Сравнение методов обработки ошибок

Ознакомившись с основами передачи и улавливания исключений, давайте уделим пару минут сравнению различных подходов к обработке ошибок в разных языках программирования.

Стандартным подходом к обработке ошибок всегда была передача кода ошибки вызывающему методу, который должен был декодировать возвращаемое значение и действовать соответствующим образом. Воз-вр^щаемое значение может быть простым, как, скажем, базовый тип С или C++, или это может быть указатель на более сложный объект, содержащий всю информацию, необходимую для оценки и понимания ошибки. Более развитые методы обработки ошибок включают соответствующую законченную подсистему. В этом случае вызванный метод указывает ошибку подсистеме, а затем возвращает код ошибки вызывающему методу. Вызывающий метод затем вызывает глобальную функцию, экспортируемую из подсистемы обработки ошибок, чтобы определить причину последней зарегистрированной подсистемой ошибки. Пример такого подхода — Microsoft Open Database Connectivity (ODBC) SDK. Однако независимо от конкретной семантики концепция остается той же: активизирующий метод так или иначе вызывает другой метод и анализирует возвращаемое значение, чтобы узнать, успешно ли завершился вызванный метод. Этот подход, хотя и был стандартом долгие годы, во многом очень устарел. В следующих разделах описываются случаи, в которых обработка исключений имеет громадные преимущества над применением кодов возврата.