Re: эксепшины vs коды возврата
От: Михаил Челноков Украина  
Дата: 11.09.02 17:57
Оценка:
Здравствуйте Vladik, Вы писали:

V>Начинаю обещанный топик Сознательно начинаю его именно в форуме по С++, т.к. хочу ограничить обсуждение именно этим языком (применительно к другим языкам, например к джаве, мое отношение к сабжу отличается с точности почти до наоборот


[skipped]

Добавлю еще одно неудобство — крайне трудно правильно обработать exception, если, конечно, это не глобальный сбой и ничего кроме "Ошибка, работать нельзя" ((с) некий Никитинский) сделать невозможно. Проверено на горьком опыте. Либо приходится обрабатывать их почти там же, где они генерируются (что вообще ставит под сомнение целесообразность их применения), либо на более верхнем уровне невозможно учесть условия/среду их возникновения, и, соответственно, правильно выкрутиться из ситуации.

V>Все вышеперечисленные тезисы заставляют меня воздерживаться от применения механизма эксепшинов при разработке на С++. Поэтому просто приведу пару примеров тех редких случаев, когда я посчитал использование эксепшинов оправданным и использовал этот механизм.

V>1) Коммуникационный протокол связи по COM-порту. Эксепшины на ошибку COM-порта и "глобальный" таймаут приема/передачи. В обоих случаях дальнейшее продолжение связи бессмысленно и очень удобно кинуть эксепшин из "недр" и поймать его на самом "верху", нежели возиться с кучей кодов возврата.
V>2) Клиент, тупо вызывающий методы сервера. При любой ошибке вызова (не путать с результатом вызова) кидается эксепшин, который отлавливается и расшифровывается "наверху" в основном цикле приложения. При этом от клиента не требуется какой-либо особой реакци на эти ошибки (разве что показать юзеру). Т.е. юзер просто инициирует некое действие — клиент "переводит" его на сервер.

Обобщим — exception'ы целесообразно применять, когда их обработка не имеет смысла...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.