现在假设有一个三层架构的程序,数据访问层DA,逻辑层BL,表示层WEB。
1.假如在操作数据库时DA层遇到一个异常,比如说“sqlserver不存在或者访问被拒绝”的这种异常,是应该在哪个层中捕获呢?是在数据层直接捕 获?还是数据层不捕获而在逻辑层捕获?还是这两个层都不捕获最后由表示层来捕获呢?是在每个层都要捕获还是底层捕获然后上层靠方法的返回值来确定方法是否 成功?
2.还是在这个程序中,举例说用户注册,当BL调用DA的一个方法把一个用户的信息插入用户表时,在插入之前会检测这个用户的登录名是否在数据库中已经存在,假如这个登录名已经存在,那么采用以下哪种方法更好?
a.表示层(逻辑层)根据所调用的逻辑层(数据层)方法的返回值来提示用户注册是否成功,即定义返回true为插入成功返回false为不成功。
b.还是在逻辑层采用抛出一个异常的方式(throw new SqlException("当前登录名已经存在!")),然后在表示层try一下,捕获错误时直接把错误信息lbMessage.Text = ex.Message;呢?
这几种解决方法都是我现在琢磨的,当然各位如果有更好的方法也欢迎不吝赐教,由于刚刚接触三层开发,不太熟悉,所以问题较多,而且写得也比较多,可能各位看着比较费劲吧。我看PetShop中那个SQLHelper层没有捕获异常而是在上层去捕获的....
请各位指教,谢谢了。
1.假如在操作数据库时DA层遇到一个异常,比如说“sqlserver不存在或者访问被拒绝”的这种异常,是应该在哪个层中捕获呢?是在数据层直接捕 获?还是数据层不捕获而在逻辑层捕获?还是这两个层都不捕获最后由表示层来捕获呢?是在每个层都要捕获还是底层捕获然后上层靠方法的返回值来确定方法是否 成功?
2.还是在这个程序中,举例说用户注册,当BL调用DA的一个方法把一个用户的信息插入用户表时,在插入之前会检测这个用户的登录名是否在数据库中已经存在,假如这个登录名已经存在,那么采用以下哪种方法更好?
a.表示层(逻辑层)根据所调用的逻辑层(数据层)方法的返回值来提示用户注册是否成功,即定义返回true为插入成功返回false为不成功。
b.还是在逻辑层采用抛出一个异常的方式(throw new SqlException("当前登录名已经存在!")),然后在表示层try一下,捕获错误时直接把错误信息lbMessage.Text = ex.Message;呢?
这几种解决方法都是我现在琢磨的,当然各位如果有更好的方法也欢迎不吝赐教,由于刚刚接触三层开发,不太熟悉,所以问题较多,而且写得也比较多,可能各位看着比较费劲吧。我看PetShop中那个SQLHelper层没有捕获异常而是在上层去捕获的....
请各位指教,谢谢了。