33 Thread support library [thread]

33.2 Requirements [thread.req]

33.2.2 Exceptions [thread.req.exception]

Некоторые функции, описанные в этом разделе, указаны для создания исключений определенного типа system_­error. Такие исключения должны выдаваться, если обнаруживается какое-либо из условий ошибки функции или вызов операционной системы или другого базового API приводит к ошибке, которая не позволяет библиотечной функции соответствовать ее спецификациям. Об отказе в выделении памяти должно быть сообщено, как описано в [res.on.exception.handling].

[ Example: Рассмотрим функцию в этом предложении, которая определена для создания исключений определенного типа system_­error и задает условия ошибки, которые включают в себя operation_­not_­permitted для потока, который не имеет привилегии для выполнения операции. Предположим , что во время выполнения этой функции, errno из EPERM сообщается на API вызова POSIX , используемой реализации. Поскольку POSIX специфицирует errno из EPERM когда «абонент не имеет полномочий для выполнения операции», реализация карт EPERM на error_­condition из operation_­not_­permitted ([syserr]) и исключения типа system_­error выбрасывается. ]end example

Сообщение, error_­code сообщаемое code() функцией-членом такого исключения, должно сравниваться с одним из условий, указанных в элементе условия ошибки функции.