vit*_*aut 4 c++ error-handling c++11 c++-chrono
这与我先前的问题有关,我问是否std::chrono::steady_clock::now应该这样noexcept.现在我知道我应该想知道这个函数如何报告错误?例如,Linux上此函数的常见实现使用
clock_gettime,它可以返回错误.
clock_gettime在调试的实现中,Linux 工具可能报告的所有错误都是不可能的std::chrono::steady_clock::now().
错误是:
int clock_gettime(clockid_t clk_id, struct timespec *tp);
EFAULT
Run Code Online (Sandbox Code Playgroud)
tp指向可访问的地址空间之外.
没有用户提供的tp错误std::chrono::steady_clock::now().如果std::chrono::steady_clock::now()传递错误tp来clock_gettime,它仅仅是一个错误steady_clock,很容易固定.
EINVAL
Run Code Online (Sandbox Code Playgroud)
此系统不支持指定的clk_id.
没有用户提供的clk_id错误std::chrono::steady_clock::now().如果std::chrono::steady_clock::now()传递错误clk_id来clock_gettime,它仅仅是一个错误steady_clock,必须固定.
请注意,实现steady_clock不保证是可移植的,并且可能必须移植到任何给定平台并进行正确性测试.可能会发现steady_clock无法clock_gettime在某些平台上实现.
EPERM
Run Code Online (Sandbox Code Playgroud)
clock_settime()无权设置指示的时钟.
不适用于steady_clock没有API来设置时间.
| 归档时间: |
|
| 查看次数: |
734 次 |
| 最近记录: |