Как обнаружить, когда исключение находится в полете?

Кортежи видов функции вида Python правильно (т.е. использование знакомого лексикографического порядка):

a = [(2, "b"), (1, "a"), (2, "a"), (3, "c")]
print sorted(a)
#[(1, 'a'), (2, 'a'), (2, 'b'), (3, 'c')]

Полезный, если Вы хотите отсортировать список людей после возраста и затем назвать.

13
задан pauldoo 27 July 2009 в 11:38
поделиться

5 ответов

На самом деле это возможно, вызовите uncaught_exception () в заголовке . Одна из причин, по которой вы можете захотеть это сделать, - это перед тем, как генерировать исключение в деструкторе, что приведет к завершению программы, если этот деструктор будет вызван как часть раскрутки стека. См. http://msdn.microsoft.com/en-us/library/k1atwat8%28VS.71%29.aspx

7
ответ дан 2 December 2019 в 00:19
поделиться

Прежде чем заходить слишком далеко по пути uncaught_exception (), посмотрите http://www.gotw.ca/gotw/047.htm

8
ответ дан 2 December 2019 в 00:19
поделиться

Возможно, вы ищете

// Returns true only if a thrown exception is being currently processed
namespace std {
    bool uncaught_exception();
};

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

1
ответ дан 2 December 2019 в 00:19
поделиться

Я не уверен, есть ли лучший способ, но не могли бы вы перехватить и повторно выбросить исключение?

-1
ответ дан 2 December 2019 в 00:19
поделиться

одним из способов было бы заменить механизм обработки исключений вашим собственным .

с другой стороны, всегда напрашивается вопрос - зачем это нужно делать? ..

еще несколько ссылок на тему: Обратное изменение Microsoft Visual C ++, часть I: обработка исключений и Модель исключения

-1
ответ дан 2 December 2019 в 00:19
поделиться
Другие вопросы по тегам:

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