如何正确处理泛型类中的错误?

Mik*_*lls 1 c# error-handling

我正在研究泛型类,正在处理错误.我try catch在一个地方使用了一个我收到错误的地方.问题是,如何将该错误返回给调用方法?

    public static DataTable GetData(string connString, string sqlStatement, Action<iDB2ParameterCollection> parameters)
    {
        DataTable dt = new DataTable();

        using (iDB2Connection conn = new iDB2Connection(connString))
        {
            using (iDB2Command cmd = new iDB2Command(sqlStatement, conn))
            {
                conn.Open();
                if (parameters != null) { parameters(cmd.Parameters); }
                try
                {
                    using (iDB2DataAdapter da = new iDB2DataAdapter(cmd)) { da.Fill(dt); }
                }
                catch (iDB2SQLErrorException e)
                {
                }

                conn.Close();
            }
        }

        return dt;
    }
Run Code Online (Sandbox Code Playgroud)

Fei*_*ngo 5

通过不在基类中捕获它!

我不喜欢捕获和吞噬基类级别的异常.

让派生类担心这些细节.

附注(位置证据): 您会注意到,在几乎任何API中,doucmentation将报告将使用类引发的异常.如果他们要在基类中捕获它们,那么它们已经有效地吞噬它们,使得您无法像所述类的用户那样无助.

附加文章:

...而不是根据细节编写我们的抽象,我们应该根据抽象来编写细节.

这是依赖倒置原则的核心租户.

看看这篇文章,了解一些在设计过程中需要考虑的好东西,http://www.oodesign.com/design-principles.html