为了向我们的应用程序添加一些参数验证和正确的使用语义,我们尝试向 .NET 应用程序添加正确的异常处理。
我的问题是:当在 ADO.NET 中抛出异常时,如果特定查询没有返回数据或找不到数据,我应该使用什么类型的异常?
伪代码:
(阅读,不要仔细检查代码的语义,我知道它不会编译)
public DataSet GetData(int identifier)
{
dataAdapter.Command.Text = "Select * from table1 Where ident = " + identifier.toString();
DataSet ds = dataAdapter.Fill(ds);
if (ds.table1.Rows.Count == 0)
throw new Exception("Data not found");
return ds;
}
The MSDN 指南 http://msdn.microsoft.com/en-us/library/ms229021(VS.80).aspx state:
没有硬性规定:但如果您有以不同方式处理此异常的场景,请考虑创建自定义异常类型,例如 DataNotFoundException正如约翰·布雷特(Johan Buret)建议的 https://stackoverflow.com/questions/121700/what-exception-should-be-thrown-when-an-adonet-query-cannot-retrieve-the-reques#121809.
否则,您可能会考虑抛出现有异常类型之一,例如 System.Data.DataException 甚至可能是 System.Collections.Generic.KeyNotFoundException。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)