首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c#中捕获特定的和一般的异常

在c#中捕获特定的和一般的异常
EN

Stack Overflow用户
提问于 2009-09-11 14:38:44
回答 7查看 19.4K关注 0票数 8

这个问题来自于针对我创建的对象运行的代码分析。分析表明,我应该捕获一种更具体的异常类型,而不仅仅是基本异常。

您是否发现自己只是使用捕获泛型异常,还是试图捕获特定的异常,并使用多个catch块默认为泛型异常?

所讨论的代码块之一如下:

代码语言:javascript
复制
internal static bool ClearFlags(string connectionString, Guid ID)
{
    bool returnValue = false;
    SqlConnection dbEngine = new SqlConnection(connectionString);
    SqlCommand dbCmd = new SqlCommand("ClearFlags", dbEngine);
    SqlDataAdapter dataAdapter = new SqlDataAdapter(dbCmd);

    dbCmd.CommandType = CommandType.StoredProcedure;
    try
    {
        dbCmd.Parameters.AddWithValue("@ID", ID.ToString());

        dbEngine.Open();
        dbCmd.ExecuteNonQuery();
        dbEngine.Close();

        returnValue = true;
    }
    catch (Exception ex)
    { ErrorHandler(ex); }

    return returnValue;
}

谢谢你的建议

编辑:这里是来自代码分析的警告

警告351 CA1031 : Microsoft.Design :修改'ClearFlags(string,Guid)‘以捕获比' exception’更具体的异常,或者重新抛出异常。

EN

Stack Overflow用户

发布于 2009-09-11 14:43:42

是,

你应该从最具体的例外到最少,这样你就可以以一种适当的方式处理事情。

例如,如果您正在发出web请求,您应该首先捕获类似TimeOuts和404的内容,然后您可以通知最终用户他们应该重试(超时)和/或检查他们输入的URL。

然后你可以抓住一些不那么一般的东西,万一有更古怪的事情出了问题,然后回到正确的地方,抓住一个例外,在一些荒谬的事情发生的情况下。

票数 1
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1411289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档