http://topic.csdn.net/t/20051202/00/4432545.html
上面的帖子我看了,但是还是没有答案,
如果你的项目不是什么三层或者多层的话(小项目),不管用什么方式处理都可以
但是在大型的开发中,各层都分了很细,所以怎么样使用错误和异常就很重要了例如:1
数据层:
public int Add()
{
try
{
// 数据层的操作,添加数据到数据库中
}
catch(DbException ex)
{
//记录日志或者其他
throw new DALException(ex);
}
catch(Exception ex)
{
//记录日志或者其他
throw new DALException(ex);
}
return 1;
}
业务层:对于业务层,方法的返回值很重要了,如果你用bool的话,又要返回错误的信息恐怕是无能为力了
如果你用int大于0表示成功否则失败,-5表示XX错误原因,这样岂不是要写一大堆的方法返回值,即-5表示什么等,
又要求程序员对方法很熟悉,至少要知道方法返回值个表示什么。
public int add()
{
try
{dal.add();
}
catch(DALException ex)
{
//处理一些bll的事情,当然返回的信息是对用户有效的,而不是数据库的一些技术信息
throw new BLLException(ex)
}
return 1;
}
上面的例子就是数据库有异常的时候怎么处理的,我想了解下各位有什么好的方法,例子2
业务层
pubic int add(model)
{
if(model.Age>130)
{
//一种逻辑错误,年龄不可能那么大,做时怎么处理呢,直接抛出异常吗,还是返回一个int类型的值,-6表示这个错误,或者返回一个对象
//对象里有错误的原因和数字
}
return 1
}
对于上面2种情况我一直很疑惑,到底怎么处理才好,我目前是用返回对象的形式和int的形式做的,感觉很麻烦,跟ui联系太紧了
希望各位说说你们的经验和看法
上面的帖子我看了,但是还是没有答案,
如果你的项目不是什么三层或者多层的话(小项目),不管用什么方式处理都可以
但是在大型的开发中,各层都分了很细,所以怎么样使用错误和异常就很重要了例如:1
数据层:
public int Add()
{
try
{
// 数据层的操作,添加数据到数据库中
}
catch(DbException ex)
{
//记录日志或者其他
throw new DALException(ex);
}
catch(Exception ex)
{
//记录日志或者其他
throw new DALException(ex);
}
return 1;
}
业务层:对于业务层,方法的返回值很重要了,如果你用bool的话,又要返回错误的信息恐怕是无能为力了
如果你用int大于0表示成功否则失败,-5表示XX错误原因,这样岂不是要写一大堆的方法返回值,即-5表示什么等,
又要求程序员对方法很熟悉,至少要知道方法返回值个表示什么。
public int add()
{
try
{dal.add();
}
catch(DALException ex)
{
//处理一些bll的事情,当然返回的信息是对用户有效的,而不是数据库的一些技术信息
throw new BLLException(ex)
}
return 1;
}
上面的例子就是数据库有异常的时候怎么处理的,我想了解下各位有什么好的方法,例子2
业务层
pubic int add(model)
{
if(model.Age>130)
{
//一种逻辑错误,年龄不可能那么大,做时怎么处理呢,直接抛出异常吗,还是返回一个int类型的值,-6表示这个错误,或者返回一个对象
//对象里有错误的原因和数字
}
return 1
}
对于上面2种情况我一直很疑惑,到底怎么处理才好,我目前是用返回对象的形式和int的形式做的,感觉很麻烦,跟ui联系太紧了
希望各位说说你们的经验和看法
解决方案 »
- SMTP 发件人 怎么设置显示中文?
- GridView控件中使用编辑,然后点更新前先判断输入是否正确,然后在决定更新不,该如何实现
- 表里有一个日期字段,这个字段的意思是当用户在这个日期内未曾更新这条数据,那么系统会自动发送EMAIL给用户,这样的功能用.NET(B/S)能实现吗?
- 页面第一次加载跟非第一次加载有什么区别??(asp.net)
- 几个小问题
- 关于文本编辑器FreeTextBox1.6,请哪位用过的指点一下
- 框架网页:左边完成excel表导出后,右框架里tree的连接全部不能用了,咋回事啊?刷新右框架的页面,就可以了
- 不回发,实现得到treeview上次点的节点?谢谢 在县等 江雨等各位大哥帮忙
- 请问Button控件能不能加入图片?图片控件能不能加单击事件?多谢
- 一个初学者的问题:如何连接数据库?
- 从 repeater中获取Dropdownlist 和 button
- 谈下你们如何进行视图管理的和版本控制的
if(model == null)
throw new ArgumentNullExceltion("model");
if(model.age > 130 || model.age<0)
throw new ArgumentOutOfRangeException("model...");
try {
new TableAccess<Model>.Save(model);
} catch(Exception ex) {
throw ex;
}
}为什么使用void而非int?
因为对于方法的调用者,只需要知道方法是否执行成功,而不需要被调用的方法告诉他往数据库里写了几行数据。
然而用异常处理和用返回对象的区别是什么我还是搞不清楚比如bll的一个方法要个ui调用者一个信息,比如是用户存在不能插入重复记录
如果方法是返回int的话
就要这样
if(result==-6){//用户存在不能插入重复记录
}
如果是异常的话try
catch{XXexception}
{}就是这样if和catch有什么区别,异常的话降低了性能
用int或者对象吗比如:
public int add(model)
{
if(model.Age<=0 || model.Age>130)
{
//这个错误是可知的,但是不抛出异常,那么要怎么样才能给调用方提示信息,表示这种错误呢
}
}