之前看过了异常处理的一篇博客:
[ http://blog.csdn.net/ls1645/article/details/50528789 C#中的异常捕获机制(try catch finally)]
在机房中实践了一下,终于有些理解了。上面链接中的文章对于异常处理的阐释已经很清楚明白了,我就把机房中异常处理的例子贴出来吧,应用地很简单。
登录中验证用户名密码的正确性:
U层代码:
try
{
//检查用户名密码是否正确
//如果返回值为false,则给出提示,否则继续进行
if (!loginF.IsCorrect(listUser))
{
MessageBox.Show("用户名或密码错误!请检查", "提示!");
txtUserID.Focus();//设用户名为焦点
return;
}
}
catch (Exception)
{
MessageBox .Show ("错误类型:"+e,"提示");
return;
}
B层代码:
#region 判断密码是否正确
/// <summary>
/// 判断密码是否成功
/// </summary>
/// <param name="user">用户名</param>
/// <returns>密码正确或失败</returns>
public bool IsCorrect(List<TC_User> user)
{
try
{
IDAL.IUser iuser = factory.CreateIUser();
List<TC_User> listUser = iuser.GetUserInfo(user);
//如果从数据库中查出的用户名密码与界面中传来的用户名密码均匹配,则返回true;否则,返回false
if (listUser[0].userID.Trim() == user[0].userID.Trim() && listUser[0].passWord.Trim() == user[0].passWord.Trim())
{
return true;
}
else
{
return false;
}
}
catch (Exception e)
{
throw e;
}
}
#endregion
D层代码:
#region 根据用户ID获得用户表中的信息
/// <summary>
/// 获得用户表中的信息
/// </summary>
/// <param name="user">用户信息:userid</param>
/// <returns>List<TC_User></returns>
public List<TC_User> GetUserInfo(List<TC_User> user)
{
string sql = "select * from TC_User where userID=@userID";
SqlParameter[] paras = new SqlParameter[]{
//new SqlParameter("@userID",user[0].userID ) //(这里特意注释掉,为了测试try...catch使用)
};
dt = sqlhelper.ExecuteQuery(sql, paras, CommandType.Text);
//转实体
List<TC_User> selectUser = new List<TC_User>();
selectUser = entityUserList.ToList(dt);
return selectUser;
}
#endregion
运行时的图:
点击确定按钮,提示框关闭,系统不会崩溃。
在异常处理的使用过程中发现,往往有异常处理,不好调试程序,尤其是自定义的异常处理不是那么准确的时候。