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

标签 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;
    }

最佳答案

不在基类中捕获它!

我不喜欢在基类级别捕获和吞噬异常。

让您的派生类担心这些细节。

旁注(立场证据): 您会注意到,在几乎任何 API 中,文档都会报告类将抛出哪些异常。如果他们在基类中捕获它们,他们实际上已经吞噬了它们,使您作为所述类的用户变得无助。

其他文章:

...instead of writing our abstractions based on details, the we should write the details based on abstractions.

这是依赖倒置原则的核心内容。

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

关于c# - 如何正确处理泛型类中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8857932/

相关文章:

c++ - 处理文件和图像加载异常的最佳方式是什么?

c# - Windows 手机 | VoiceCommand 能否导致方法调用而不是导航

ajax - 使用 jsf.ajax.addOnError 处理 ajax 错误

java - RxJava : Conditionally catch error and stop propagation

javascript - 在跨域请求中捕获 JSONP 错误

regex - 使用RegEx获取输入页面的错误处理

c# - 调试 JSON.NET

C# Lock ("string") 不适用于动态参数?

c# - WPF - 在没有结构化异常处理的情况下检查资源是否存在

c# - 不用 Crystal 报表设计器创建rpt文件