Временно отключить исключения первого шанса - PullRequest
0 голосов
/ 22 марта 2012

Есть ли способ временно отключить исключения первого шанса в Visual C ++?

Примерно так:

void someFunc() {
   disableFirstChanceExceptions();

   try {
     // some code
   }
   catch (std::exception& e) {
     // some code
   }
   catch (...) {
     // some code
   }

   enableFirstChanceExceptions();
}

Я знаю, что такое исключения первого шанса и как их использоватьих.

Проблема в том, что я распространяю DLL, в которой используются исключения.
К сожалению, если клиент использует отладчик со своей программой, он заметит мои исключения для интерна.
Дело не в том, что я хочу их скрывать, а скорее в том, что я хочу избавиться от этих вопросов поддержки.

Ответы [ 2 ]

3 голосов
/ 22 марта 2012
  • Ваш код генерирует исключения.
  • Ваши клиенты настаивают на запуске отладчиков для вашего кода, и явно настраивают его для взлома исключений первого шанса.*

    У вас есть два основных варианта:

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

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

0 голосов
/ 22 марта 2012

Исключения первого шанса - это не то, что можно включать и выключать в вашем коде (речь идет только о цепях Windows, vs, C ++, не знакомых с другими платформами). Эта конструкция встроена в систему времени выполнения, чтобы сделать возможной отладку. Отладчик может быть настроен на игнорирование некоторых или всех исключений первого шанса. Вы можете использовать ctrl + alt + e, чтобы вызвать меню поведения отладчика VS. Это позволит клиентам при отладке фильтровать то, что хочет поймать отладчик.

...