Какое обоснование политики исключений Какао - или зачем использовать только исключения для ошибок программиста?

В чем обоснование политики исключений Какао - или зачем использовать исключения только для ошибок программиста?

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

Но почему нужно использовать исключения, чтобы сигнализировать об ошибках программиста? В этом случае должно быть достаточно регистрации сообщения, за которым следует abort () . Почему я должен писать блок @catch (...) для обработки ошибки программиста вместо исправления самой ошибки? Я много думал об этом и не нашел разумного использования исключения для ошибки программиста.

(В качестве примечания / вопроса: я написал парсер рекурсивного спуска, и я планирую использовать в нем исключения для обработки ошибок. Это кажется мне гораздо более разумным, чем добавление параметра вывода к каждому отдельному функции и вручную проверять наличие ошибок повсюду. Конечно, я поймаю любые исключения, которые добавляю в методы верхнего уровня, которые вызываются извне. Кто-нибудь думает, что это плохое использование исключений?)

Обновление: настоящее вопрос

Спасибо за все ответы. Все они верны, но на самом деле они не отвечают на мой вопрос. Так что, наверное, я не совсем понял это, извините за это. Итак, вот настоящий вопрос:

Почему Какао вообще выдает исключения для ошибок программиста (или утверждений)? Их не следует ловить, и на самом деле писать код, который обрабатывает ошибку программиста где-нибудь в стеке вызовов, в любом случае не является хорошей идеей. Мне кажется, что исключения - это напрасная трата усилий. Достаточно просто зарегистрировать ошибку и вызвать abort () (который завершает программу). Так в чем же преимущество того, что на самом деле генерируется исключение?

Я понимаю, почему исключения обычно не используются и не приветствуются - большинство частей Какао просто не безопасны для исключений. И вопрос не в этом. Надеюсь, теперь я прояснил это.

5
задан Sven 28 September 2010 в 20:38
поделиться