处理异常
2008-09-11 16:18 晓彦 阅读(329) 评论(0) 收藏 举报处理异常的策略在任何企业应用程序中都是必不可少的。下列信息将帮助你添加数据访问应用程序块到管理异常的方法中去:
- CreateDatabase 方法使用配置信息,其可能的结果在配置相关的异常中。
- Database 方法使用 ADO.NET 和底层数据库提供程序。由 ADO.NET 抛出的异常由数据访问应用程序块为度量的目的而捕获,然后再次抛出。
- 充分处理异常通常要求访问特定的异常类型。可以包含用于特定数据库提供程序的异常如 SqlException 的 catch 语句。然而数据库提供程序专用的异常类型在不同提供程序之间不能移植。
- 使用 CommandBehavior.CloseConnection 调用 ExecuteReader。它在 DataReader 关闭时关闭连接。如果在一个 try 块中使用 ExecuteReader ,可以添加一个 finally 语句并关闭返回的 DataReader 对象,就像展示在下列示例中的一样。
C#
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = db.GetStoredProcCommand("GetProductsByCategory");
IDataReader dataReader = null;
try
{
//...
dataReader = db.ExecuteReader(dbCommand);
}
catch(Exception ex)
{
// Process exception
}
finally
{
if (dataReader != null)
dataReader.Close();
}
Visual Basic
Dim db As Database = DatabaseFactory.CreateDatabase()
Dim dbCommand As DbCommand = db.GetStoredProcCommand("GetProductsByCategory")
Dim dataReader As IDataReader = Nothing
Try
' ...
dataReader = db.ExecuteReader(dbCommand)
Catch ex As Exception
' Process exception
Finally
If (Not dataReader Is Nothing) Then
dataReader.Close()
End If
End Try
另一种方法是,可以包含 using 语句来销毁 DataReader 对象,这将导致它的关闭,就像展示在下列示例中一样。
C#
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = db.GetStoredProcCommand("GetProductsByCategory");
using (IDataReader dataReader = db.ExecuteReader(dbCommand))
{
// Process results
}
Visual Basic
Dim db As Database = DatabaseFactory.CreateDatabase()
Dim dbCommand As DbCommand = db.GetStoredProcCommand("GetProductsByCategory")
Using dataReader As IDataReader = db.ExecuteReader(dbCommand)
' Process results
End Using
对于在 .NET 中的异常管理的设计和实现原则,请参见异常管理架构指南。
浙公网安备 33010602011771号