如果 DAL层 数据类型转化错误怎么办?
假如在DAL层中有这样的代码:
House house = new House(HouseId);
SqlDataReader reader = ...........
house.ExpiredDate = Convert.ToDateTime(reader["ExpiredDate"]);
那么因为reader["ExpiredDate"]为dbnull, 或者ExpiredDate干脆就不是日期型的,比如在数据库端错误的设置为字符串型的。
所以在执行Convert.ToDateTime(reader["ExpiredDate"])这里就会出错。
那么BLL层只有捕获到这个错误,进而展现给UI层吗
[解决办法]
可以自己扩展一个容错的方法,如果是正确的时间类型的数据就返回正确的值,如果不是就返回一个空的DateTime类型的结构:
public static DateTime GetDateTime(object obj) { return obj == null || obj == DBNull.Value ? new DateTime() : Convert.ToDateTime(obj); }DateTime dt = GetDateTime(reader["ExpiredDate"]);