思考记录--错误状态、异常抛出与接口耦合度的关系
2011-12-12 12:38
330 查看
错误状态、异常抛出 与 接口耦合
当程序中函数的调用一层一层的深入,那么如果某层的函数执行出现了错误,那么对于错误是一层一层返回,还是在不同层次上分别进行处理。
如果将错误一层一层向上返回,势必造成上次逻辑开发需要知道很多底层细节,比如。用户类需要持久化处理,那么如果是通过网络保存到另一台机上部署的DB中,那么网络异常、数据库异常等所有的错误,用户的持久化类都需要处理。
现在的编译器提供了很详细的程序调用栈情况信息,我们可以跟踪这些信息一层一层发现问题的所在。
异常处理机制,提供了将异常可以逐层向上抛出的处理方法。
可细细想来,异常和错误并不是都抛给最上层程序来处理。很多异常和错误都是在特定的模块或特定的层次中进行了处理,对外只暴露了部分需要调用者知道的异常。
这应该还是接口设计方面的考虑,在函数调用过程中,那些是同一个层次,完成同一个功能模块的,那些是位于不同层次,不同模块的。
个人认为,接口之间的耦合度也可以通过需要知道对方的异常多少来衡量。我需要知道和处理的异常越多,那么我们之间联系也越精密。
当程序中函数的调用一层一层的深入,那么如果某层的函数执行出现了错误,那么对于错误是一层一层返回,还是在不同层次上分别进行处理。
如果将错误一层一层向上返回,势必造成上次逻辑开发需要知道很多底层细节,比如。用户类需要持久化处理,那么如果是通过网络保存到另一台机上部署的DB中,那么网络异常、数据库异常等所有的错误,用户的持久化类都需要处理。
现在的编译器提供了很详细的程序调用栈情况信息,我们可以跟踪这些信息一层一层发现问题的所在。
异常处理机制,提供了将异常可以逐层向上抛出的处理方法。
可细细想来,异常和错误并不是都抛给最上层程序来处理。很多异常和错误都是在特定的模块或特定的层次中进行了处理,对外只暴露了部分需要调用者知道的异常。
这应该还是接口设计方面的考虑,在函数调用过程中,那些是同一个层次,完成同一个功能模块的,那些是位于不同层次,不同模块的。
个人认为,接口之间的耦合度也可以通过需要知道对方的异常多少来衡量。我需要知道和处理的异常越多,那么我们之间联系也越精密。
相关文章推荐
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)
- 对于直接返回错误响应和抛出异常的选择思考
- Android开发中调用Spring CXF整合发布的WebService接口为什么抛出异常错误?
- 错误记录 要注意异常的抛出
- WebAPI 用ExceptionFilterAttribute实现错误(异常)日志的记录(log4net做写库操作)
- Mybatis Generator 异常错误记录
- python错误处理记录完整的异常堆栈信息
- 《Thinking in Java》——异常的限制,子类异常与父类异常接口的关系
- preg_match()检查错误,并抛出异常的各种应用场景
- UncaughtException处理类,当程序发生Uncaught异常的时候,由该类来接管程序,并记录发送错误报告.
- PHP中错误与异常的日志记录用法分析
- 设计原则-----函数返回错误还是抛出异常
- Mac 版本IDEA Tomcat 报代理抛出异常错误: java.net.MalformedURLException: Local host name unknown
- [c++]记录Windows程序“应用程序错误”到异常日志
- 解决python3捕获cx_oracle抛出的异常错误问题
- 抛出异常,打印错误信息,追踪错误
- 编程必备*错误异常信息记录工具—log4j使用方法
- 错误日志记录接口
- C# 如何处理抛出的异常,或者已知的错误
- 在PHP7中抛出异常和错误