uncaught_exception
может использоваться в деструкторах, чтобы определить, выполняются ли они в контексте исключения (где бросок завершит программу). Я не согласен с тем, что философия немного ошибочна, но это зависит от того, как вы используете исключения - если ваше исключение является исправимой ошибкой, может быть удобнее просто попытаться исправить ее, чем позволить другой части кода попытаться разобраться с этим, как обычно.
Это также полезно, если у вас есть код, требующий активного исключения (это редко, но иногда у вас есть библиотека управления исключениями, которая будет использовать throw;
для получения текущего исключения, но это приведет к завершению, если его нет , поэтому uncaught_exception
может использоваться для определения того, будет ли это прервано (и, если да, возможно, сгенерировать исключение!). Примером являются новые средства исключения, которые также являются частью наддува.