Exception 异常处理/错误报告理论上不可能的情况是否必要?

Exception 异常处理/错误报告理论上不可能的情况是否必要?,exception,error-handling,Exception,Error Handling,这个问题我已经想了一两个月了,但我不能下结论。 我的问题是 理论上不可能的异常处理/错误报告案例是否必要? 我所说的“理论上不可能的情况”是这样的 有一些事情要做,所以线程进入一系列操作,但在for循环的最大迭代次数内找不到“某物” 例如,在红黑树中查找具有最小键的节点的简单代码 SNode* const GetNodeWithSmallestKey() const { SNode* pNode = m_pRootNode; for (unsigned

这个问题我已经想了一两个月了,但我不能下结论。 我的问题是

理论上不可能的异常处理/错误报告案例是否必要?

我所说的“理论上不可能的情况”是这样的

有一些事情要做,所以线程进入一系列操作,但在for循环的最大迭代次数内找不到“某物”

例如,在红黑树中查找具有最小键的节点的简单代码

SNode* const GetNodeWithSmallestKey() const
    {
        SNode* pNode = m_pRootNode;

        for (unsigned long long i = 0ull; i < m_ullElementCount; ++i)
        {
            if (pNode->pLeftChildNode == &m_leafNode)
                return pNode;

            pNode = pNode->pLeftChildNode;
        }

        return nullptr;
    }
预期结果(返回pNode)未在最大迭代内执行,这是不可能的。 在这一点上,我想知道

Snode* pNode = GetNotWithSmallestKey();
if (pNode == nullptr)
    return EFail;
这种处理是必要的

我的理由是必要的

如果我对算法或其他方面的理解有误,可能会出现这种情况

我的理由是不必要的

如果这种情况从未发生过,那么这样做的意义何在

那和这个有什么区别

int a = 10;
if (a != 10)
// DoSomething
这…毫无意义

真诚感谢您的善意解释

int a = 10;
if (a != 10)
// DoSomething