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