【发布时间】:2010-11-29 16:48:55
【问题描述】:
我正在使用 asp.net,我一直在努力寻找一种处理错误的简洁方法,如果有的话,将错误消息传递给用户。例如,我有一个 User 类、UserManager 类和一个 Database 类。想象一下,我想显示所有用户,显示我从 UserManager 调用 GetAllUsers 方法,它返回一个用户对象列表。此方法创建一个数据库对象并调用方法 ExecuteQuery(string query)。
编辑: 现在我的问题是,假设 ExecuteQuery() 方法出现问题(无法打开数据库)。我想在打开数据库连接时通知用户出了点问题。我应该如何做到这一点并以一种巧妙的方式处理这个问题?
编辑 2:
你会这样做吗?还是其他?
public class Database()
{
private string _Error;
// property error (only get)
private void Open()
{
try
{
// Open DB
// Fails because of error
}
catch(Exception ex)
{
_Error = ex.Message;
}
}
public DataSet ExecuteQuery(string query)
{
try
{
Open();
// Execute query
// return dataset
}
catch(Exception ex)
{
_Error = ex.Message;
return null;
}
}
}
public class UserManager ()
{
private string _Error;
// Get property for Error
public List<User> GetAllUsers ()
{
Database db = new Database()
Dataset DS = db.ExecuteQuery("my query goes here");
(if DS == null)
{
_Error = db.Error;
return null;
}
}
}
在用户界面中点击事件:
protected void onClick_event(args)
{
Usermanager userman = new UserManager();
List<User> users = userman.GetAllUsers();
if(users == null)
{
// make a error panel visible
pnlError.Visible = true;
lblError.Text = userman.Error
}
}
这是一个好方法吗?
【问题讨论】:
-
IMO,您应该只捕获特定异常,而不是 System.Exception。仅捕获您知道可能发生且无法阻止的异常。其他所有你应该允许冒泡的东西。
-
我在下面编辑了我的答案,并附有一些链接供您查看。
-
@jlenbke:“冒泡”是什么意思?以及如何实现?
标签: c# asp.net .net logging error-handling