Как перехватить исключение Control-C в консольном приложении Visual C ++? - PullRequest
6 голосов
/ 20 июля 2009

Кажется, это должно быть просто, но я пробовал оба
try {} catch (...) {} Обработка исключений C ++ и
__try {} __finally {} структурированная обработка исключений (SEH)
и ни один из них не поймает исключение, которое происходит, когда вы контролируете приложение.

Я действительно не ожидал, что обработка исключений в C ++ сделает это, поскольку Control-C является сигналом системного типа и не вызывается C ++ throw (), но я все равно попробовал, когда SEH не работал.

Если я запускаю под отладчиком, это показывает, что Control-C вызывает исключение первого шанса, но когда он перебрасывается, мой обработчик никогда не вызывается.

1 Ответ

10 голосов
/ 20 июля 2009

Вот как обработать прерывание в Win32.

http://msdn.microsoft.com/en-us/library/ms686016%28VS.85%29.aspx

...