这个问题来自于针对我创建的对象运行的代码分析。分析表明,我应该捕获一种更具体的异常类型,而不仅仅是基本异常。
您是否发现自己只是使用捕获泛型异常,还是试图捕获特定的异常,并使用多个catch块默认为泛型异常?
所讨论的代码块之一如下:
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’更具体的异常,或者重新抛出异常。
发布于 2009-09-11 14:43:42
是,
你应该从最具体的例外到最少,这样你就可以以一种适当的方式处理事情。
例如,如果您正在发出web请求,您应该首先捕获类似TimeOuts和404的内容,然后您可以通知最终用户他们应该重试(超时)和/或检查他们输入的URL。
然后你可以抓住一些不那么一般的东西,万一有更古怪的事情出了问题,然后回到正确的地方,抓住一个例外,在一些荒谬的事情发生的情况下。
https://stackoverflow.com/questions/1411289
复制相似问题