代码之家  ›  专栏  ›  技术社区  ›  Tony The Lion

ADO与异常处理

  •  1
  • Tony The Lion  · 技术社区  · 14 年前

    我有一个其他人编写的函数,但是我正在重写这个应用程序,我只是想知道除了返回最初传递给函数的内容之外,是否还有更好的方法来处理异常?

    CComVariant GetFldVar(ADO_RsPtr rs, long nIndex, CComVariant def)
    {
        try
        {
            return rs->GetFields()->GetItem(nIndex)->GetValue();
        }
        catch (...)
        {
            return def;  // catch exception and just return old variable?? Is that the right way to go about things??
        }
    }
    
    2 回复  |  直到 14 年前
        1
  •  0
  •   Preet Sangha    14 年前

    Def似乎是默认值,即函数尝试从当前行(rs)中获取n列,如果失败,则返回默认值。我不认为这是一个错误,而是一个特定的用例。这是一个相当标准的模式,允许调用者避免检查丢失的值(尤其是数据库中的值),并指定一个默认值作为回退。

    话虽如此,它可能是一个错误,因为它吞下了一系列的错误,但可能编写的代码是为了让调用者可以继续进行,而不管ADO调用的结果如何。

        2
  •  0
  •   frag    14 年前

    传递给函数的是调用者认为正确的默认值(甚至错误指示值)。调用者现在有责任检查结果并决定要做什么。问题是这样他/她就不知道发生了什么样的错误。他可以检查连接的Errors集合,但它们只是ADO错误(尽管我认为这段代码没有空间容纳其他类型的错误)。除此之外,这条路在我看来还不错。