Re[3]: подход к try-catch
От: Centaur Россия  
Дата: 05.10.05 16:40
Оценка: 30 (3)
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, 0xDEADBEEF, Вы писали:


К>Офигеть.

К>Интересно, это законное поведение или хак вокруг типичной реализации механизма бросания?

15.1/7: The exception thrown is the one most recently caught and not finished. An exception is considered caught when initialization is complete for the formal parameter of the corresponding catch clause, or when terminate() or unexpected() is entered due to a throw. An exception is considered finished when the corresponding catch clause exits or when unexpected() exits after being entered due to a throw.

15.1/8: If no exception is presently being handled, executing a throw-expression with no operand calls terminate() (15.5.1).


Ничего не говорится про то, что throw обязано находиться непосредственно в catch-обработчике Собственно, если бы это требовалось, то пункт 15.1/8 бы был избыточным. Следовательно, перебрасывать исключение из отдельной функции — легально. И даже вызывать такую функцию, когда нет исключения, тоже легально — поведение полностью определено
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.