多层架构中的 错误与异常
2014-03-20 14:35
113 查看
转自http://www.cnblogs.com/zhuweisky/archive/2007/04/02/697195.html
异常可以分为系统异常(如网络突然断开)和业务异常(如用户的输入值超出最大范围),业务异常必须被转化为业务执行的结果。
1.DataAccess层不得向上层隐藏任何异常(该层抛出的异常几乎都是系统异常)。
2.要明确区分业务执行的结果和系统异常。比如验证用户的合法性,如果对应的用户ID不存在,不应该抛出异常,而是返回(或通过out参数)一个表示验证结果的枚举值,这属于业务执行的结果。但是,如果在从数据库中提取用户信息时,数据库连接突然断开,则应该抛出系统异常。
3.在有些情况下,BL层应根据业务的需要捕获某些系统异常,并将其转化为业务执行的结果。比如,某个业务要求试探指定的数据库是否可连接,这时BL就需要将数据库连接失败的系统异常转换为业务执行的结果。
4.UI层(包括Service层)除了从调用BL层的API获取的返回值来查看业务的执行结果外,还需要截获所有的系统异常,并将其解释为友好的错误信息呈现给用户。
异常可以分为系统异常(如网络突然断开)和业务异常(如用户的输入值超出最大范围),业务异常必须被转化为业务执行的结果。
1.DataAccess层不得向上层隐藏任何异常(该层抛出的异常几乎都是系统异常)。
2.要明确区分业务执行的结果和系统异常。比如验证用户的合法性,如果对应的用户ID不存在,不应该抛出异常,而是返回(或通过out参数)一个表示验证结果的枚举值,这属于业务执行的结果。但是,如果在从数据库中提取用户信息时,数据库连接突然断开,则应该抛出系统异常。
3.在有些情况下,BL层应根据业务的需要捕获某些系统异常,并将其转化为业务执行的结果。比如,某个业务要求试探指定的数据库是否可连接,这时BL就需要将数据库连接失败的系统异常转换为业务执行的结果。
4.UI层(包括Service层)除了从调用BL层的API获取的返回值来查看业务的执行结果外,还需要截获所有的系统异常,并将其解释为友好的错误信息呈现给用户。
相关文章推荐
- Akka框架学习中遇到的部分错误和异常及其解决方法
- ARM处理器架构-----异常/中断处理
- 获取手机型号、系统版本号、APP版本号信息(常用语全局异常处理中收集错误信息)
- 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法
- VC 调试技术与异常(错误)处理 VC 调试技术与异常(错误)处理
- VB.NET之错误异常处理
- Android异常总结---3.Failed to install *.apk on device 'emulator-5554': timeout 错误提示:
- C程序访问hadoop出现的各种编译错误和运行时各种类DefFound异常的解决方法(makefile的书写和环境变量的配置)
- C程序访问hadoop出现的各种编译错误和运行时各种类DefFound异常的解决方法
- android异常收集错误信息并保存到crash文件夹下
- 以写代学:python 错误、异常、断言
- 让程序更健壮,用错误还是抛异常?[转]
- 关于tomcat服务器部署,页面报404/500错误,myeclipse异常关闭 导致tomcat 6.0 无法重启 的问题
- ASP.NET生成eurl.axd Http异常错误处理方法
- Python入门笔记(17):错误、异常
- 问题:运行时出现以下错误:出现未处理的“System.Xml.XmlException”类型的异常出现在 system.xml.dll 中
- 细说php的异常和错误处理机制
- 基于LINQ TO SQL的多层架构中,如何将实体附加至不同的DataContext
- ios 异常错误分析
- 程序设计的多层架构学习