3:20a |
безумный кошмар программиста С++ Оказывается, любой, совершенно любой оператор в С++ может кинуть исключение. Даже следующий: int a; a = 3; // exception is thrown here %-)
Разгадка в том, что в g++ вроде б thread cancellation сделана через прокидывание исключениия. Стоит нам сделать асинхронный мод cancellation, как...
Как может взаимодействовать страшный сам по себе asynchronous thread cancellation и обычные С++ исключения - мне и представить тяжело. Легко можно словить второе исключение при откатке стека, к примеру. Со всеми вытекающими.
При случае можно посмотреть, что там реально в g++ сделано на этот счет. Впрочем, ну этот cancellation нафиг, если по большому счету. |