Если я создаю новый проект в неуправляемом C ++, Visual Studio 2008 или более поздней версии, какую модель обработки исключений я хочу использовать?
Я понимаю, что опция / EHa приводит к менее эффективному коду,а также перехватывает исключения SEH, верно?
Так что я избежал этой опции и обычно использую / EHsc, так что я перехватываю только исключения C ++, которые на самом деле выбрасываются, и не перехватывает нарушения доступа и другиеструктурированные исключения в обработчиках catch (...).Если в моем коде есть нарушение прав доступа, я не хочу, чтобы оно маскировалось с помощью catch (...) {}.
Я пишу код другим пользователям, которым нужно catch (...) {}ничего не делать, и они даже хотят, чтобы это делалось, если есть нарушение прав доступа, что кажется мне очень плохой идеей.Если есть ошибка из-за плохого кодирования, вы не хотите засунуть пальцы в уши и громко сказать: «La la la la la!»чтобы у вас не было сбоев программы?На самом деле, если код в настоящее время находится в плохом состоянии из-за ошибки кодирования, действительно ли вы хотите, чтобы код продолжался?
Итак, моя общая мысль заключается в том, что / EHa создает более крупный / более медленный код и позволяет программистамчтобы избежать написания кода, который, если присутствует фатальная ошибка, продолжит работать в неопределенном состоянии.
Кстати, я говорю о приложениях и сервисном коде, который мы пишем для большинствачасть.Не низкоуровневые драйверы устройств или что-то в этом роде.
Пожалуйста, взвесьте свои мысли.