我正在创建一个数据访问层,我想在其中处理应由业务层捕获的异常,并清楚地了解异常的来源。我正在做这样的事情..
编辑
private void OpenConnection()
{
if (ConnectionState.Closed == _connection.State)
_connection.Open();
}
在上面给出的代码中,我知道异常的原因。并想把它扔到BL处理来显示消息。
但是我在 DL 中仅使用其他一些代码行来使用此功能。
protected DataTable GetDataTable(string Query)
{
DataTable dt =new DataTable();
SqlCommand cmd = InitializeCommand(Query);
SqlDataAdapter adp = new SqlDataAdapter(cmd);
try
{
OpenConnection();
adp.Fill(dt);
CloseConnection(true);
return dt;
}
catch (SqlException ex)
{ throw ex; }
finally
{
adp.Dispose();
cmd.Dispose();
}
}
OpenConnection()
现在,如果在尝试打开连接时发生异常,则应用程序throw ex
在 OpenConnection 本身的行中崩溃,而我期望它返回异常。我应该如何处理这个问题。此外,如果发生异常,则在第二个函数中扩展我的问题,GetDataTable
应该抛出什么样的异常,其细节与此时发生的相同以及如何发生。我只知道这种方式,但这是我认为的一种方式。
throw new ApplicationException(ex.message,ex.innerexception)
编辑
假设与服务器的连接丢失或我使用了错误的连接字符串。现在我使用 BL 的 GetDataTable 函数。哪里会发生异常,我应该在哪里处理?我想知道DL中出现的问题。考虑到BL不知道DL的代码