0
我創建了一個自定義異常與自定義異常諮詢
public class InvalidUsernameException : ApplicationException
{
public InvalidUsernameException()
{
}
}
後,我拋出此異常的方法
public static DataTable GetTableForApproval()
{
using (var connection = Utils.Database.GetConnection())
using (var command = new SqlCommand("SELECT [UserID], [Username], [Email], [Role], [Date] FROM [Users] WHERE [Role] = @role", connection))
{
command.Parameters.AddWithValue("@role", "Waiting");
using (var reader = command.ExecuteReader())
{
if (reader == null || !reader.HasRows)
throw new NoFormsForAuthenticaionException();
var table = new DataTable();
table.Columns.Add("UserID", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Columns.Add("Email", typeof(string));
table.Columns.Add("Role", typeof(string));
table.Columns.Add("Registration date", typeof(DateTime));
while (reader.Read())
table.Rows.Add((int)reader["UserID"], (string)reader["Username"], (string)reader["Email"], (string)reader["Role"], (DateTime)reader["Date"]);
return table;
}
}
}
當我使用這些方法,我捕捉到了異常
try
{
GvApproveUser.DataSource = Authentication.GetTableForApproval();
GvApproveUser.DataBind();
}
catch (NoFormsForAuthenticaionException)
{
Error.HandleError("There is no forms for approval");
}
這是錯誤頁面背後的代碼
public partial class Error
{
public static string GetUrl(string message)
{
return string.Format("~/Error.aspx?errorMessage={0}", message);
}
public static void HandleError(string message)
{
HttpContext.Current.Response.Redirect(GetUrl(message), false);
}
protected override void OnPreRender(System.EventArgs e)
{
base.OnPreRender(e);
LblError.Text = ErrorMsg;
}
private string ErrorMsg
{
get
{
return Request["errorMessage"] ?? string.Empty;
}
}
}
是否有更簡單的方法發佈此錯誤消息?我可以在不違反三層架構規則的情況下做到這一點嗎?有另一種方法嗎?
public class InvalidUsernameException : ApplicationException
{
public InvalidUsernameException()
{
Error.HandleError("There is no forms for approval");
}
}
方不要:這是最好的做法是從Exception繼承而不是ApplicationException的 - http://msdn.microsoft.com/en-us/library/seyhszts.aspx 你應該不叫裏面Error.HandleError你的Exception類。該班的目的是報告一個例外。所以你以前的代碼讀得更好。 – 2009-12-27 12:01:47