我有一個基於3層的web應用程序。我想用我在業務邏輯層中使用try catch塊。在業務邏輯中使用try/catch塊是正確的還是我需要在我的UI層中使用它?在三層架構中放置try/catch的位置
請參閱我的DAL代碼。
Data Access Layer
#region Insert in to Logbook
public int Insert_LogBook(string Vehicle_Number, DateTime Vehicle_Booking_Date, TimeSpan Time_From, TimeSpan Time_To, int KM_Start, int KM_End, string Vehicle_Used_By, string Cost_Code, string Budget_Line, DateTime Entry_Date)
{
try
{
SqlCommand com = new SqlCommand("Insert_LogBook", con);
com.Parameters.Add("@Vehicle_Number", SqlDbType.NVarChar, 100).Value = Vehicle_Number;
com.Parameters.Add("@Vehicle_Booking_Date", SqlDbType.DateTime).Value = Vehicle_Booking_Date;
com.Parameters.Add("@Time_From", SqlDbType.Time).Value = Time_From;
com.Parameters.Add("@Time_To", SqlDbType.Time).Value = Time_To;
com.Parameters.Add("@KM_Start", SqlDbType.Int).Value = KM_Start;
com.Parameters.Add("@KM_End", SqlDbType.Int).Value = KM_End;
com.Parameters.Add("@Vehicle_Used_Byr", SqlDbType.VarChar, 100).Value = Vehicle_Used_By;
com.Parameters.Add("@Cost_Code", SqlDbType.NVarChar, 50).Value = Cost_Code;
com.Parameters.Add("@Budget_Line", SqlDbType.NVarChar, 50).Value = Budget_Line;
com.Parameters.Add("@Entry_Date", SqlDbType.DateTime).Value = Entry_Date;
con.Open();
int res = com.ExecuteNonQuery();
}
catch (Exception ex)
{
WebMsgBox.Show(ex.Message);
}
finally
{
con.Close();
con.Dispose();
}
return 1;
}
#endregion
所以我應該使用它在我的bal或在UI層或我的代碼是好的。因爲如果我不在我的UI層中使用try/catch,它將不會捕獲異常(如果有的話)並顯示錯誤頁面。
那麼能否請您詳細說明使用我的代碼?我沒有使用3層 – Gaurav 2013-02-21 09:32:21
+1在錯誤信息上。我們都是用書呆子的信息長大的,所以我們認爲信息必須聽起來很討厭。不,他們應該聽起來像一個朋友,用簡單的詞語來解釋問題,甚至提供可能的解決方案 – 2013-02-21 11:09:04