鉴于此代码:
using (var conn = new SqlConnection("..."))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "...";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// ...
}
}
}
}
我习惯于为数据访问编写 try/catch/finally 块,但是,我正在接触“使用”,这似乎是一种更简单的方法。但是,我正在尝试找出如何捕获可能发生的异常。
您能给我一个如何捕获异常的例子吗?
编辑添加:
我被引导相信“使用”是我的 try/catch/finally 块的替代品。我知道 using 不会捕获异常。那么这个怎么替代呢?
using
不是为了捕获异常而设计的;它旨在为您提供一种简单的方法来包装try
/finally
围绕需要处理的物体。如果您需要捕获并处理异常,那么您需要将其扩展为完整的try
/catch
/finally
或者放一个包含try
/catch
围绕整个事情。
回答您的编辑(是using
的替代品try
/catch
/finally
?) 那么不,不是。大多数时候,当使用一次性资源时,您不会立即处理异常,因为通常您无能为力。因此,它提供了一种方便的方法来确保资源被清理,无论您想要做什么是否有效。
通常,处理一次性资源的代码工作级别太低,无法决定失败时的正确操作,因此异常会传播给可以决定采取什么操作的调用者(例如重试、失败、记录等) .)。
您倾向于使用的唯一地方catch
如果您要转换异常(我认为这就是您的数据访问层正在执行的操作),则使用一次性资源进行阻止。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)