TRY/CATCH_ALL по сравнению с попыткой/выгодой

Я использовал C++ некоторое время, и я знаком с нормальной попыткой/выгодой. Однако я теперь оказываюсь в Windows, кодирующем в VisualStudio для разработки COM. Несколько частей кода используют вещи как:

TRY {
    ... do stuff
} CATCH_ALL(e) {
    ... issue a warning
}
END_CATCH_ALL;

Какой смысл их макросы? Какое преимущество они предлагают по встроенной попытке/выгоде?

Я попытался гуглить, это, но "пробует по сравнению с ПОПЫТКОЙ", твердо искать.

7
задан Tim 14 April 2010 в 21:23
поделиться

3 ответа

Это макрос MFC:
http://msdn.microsoft.com/en-us/library/t8dwzac0%28VS.71%29.aspx

На этой странице говорится, что это остаток из MFC 1.0 - используйте обычные исключения C ++ в новом коде:

версии MFC ниже 3.0 не поддерживали механизм исключений C ++. MFC предоставляет макросы для обработки исключений.

7
ответ дан 6 December 2019 в 23:03
поделиться

Это артефакт программирования Windows до тех пор, пока компиляторы не поддерживали команду try / catch или вообще не поддерживали ее.

1
ответ дан 6 December 2019 в 23:03
поделиться

Следует иметь в виду, что существует 3 различных типа исключений при программировании с помощью Visual C ++:

  1. Исключения C ++
  2. Структурированные исключения (SEH, собственный механизм исключений Windows)
  3. Исключения MFC ( упомянутые вами, которые не рекомендуются для нового кода, но могут использоваться для обратной совместимости)

Механизмы исключений SEH и C ++ не должны смешиваться .

Эта статья на MSDN содержит более подробную информацию:

http://msdn.microsoft.com/en-us/library/x057540h.aspx

3
ответ дан 6 December 2019 в 23:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: