假设您在mutex类中包含pthread互斥锁调用的以下析构函数:
~mutex()
{
pthread_mutex_destroy(&m_mutex);
}
如果失败(返回非零),我们显然不会抛出异常。我们如何最好地处理这个问题?
答案 0 :(得分:2)
编写错误消息并调用abort()。当可能发生不可能时,坚硬,明显的失败通常比继续快乐地好。
答案 1 :(得分:1)
我认为除了忽略它之外你可以做很多事情(可能记录一条消息,特别是如果你得到EBUSY
,因为这可能表明程序中存在严重的逻辑错误。)
答案 2 :(得分:1)
你可以看看boost :: threads:如果你正在构建发布 - 不会检查返回代码,如果你是构建调试版本 - 将调用abort()并打印错误消息,BOOST_VERIFY是用户此
答案 3 :(得分:0)
在我看来,在这种情况下唯一合理的追索权是assert(3)
- 出现了可怕的错误,所以有人要调查......
答案 4 :(得分:0)
我建议运行时断言。如果它失败了,你就处于posix的未定义行为的土地上。
答案 5 :(得分:0)
它在析构函数中的事实是无关紧要的。问题是如果破坏失败,你就无法恢复(忽略它除外)。无论您使用何种语言,情况总是如此。