我知道这是一个非常广泛的问题,但是短暂的"取决于"的答案将不被接受.战略诞生于处理广泛的问题.
在设计错误和异常处理策略时,应用程序设计人员应该考虑哪些问题?
策略将如何根据软件类型(COTS,内部业务应用程序,咨询软件,游戏,托管Web应用程序,嵌入式等)而有所不同?软件类型重要吗?
道德,政治和法律问题?
关于错误处理(用户,开发人员,业务支持,管理)的各种观点.
我会探讨的一些想法:
各种错误报告路由(即UI,日志记录,自动管理通知).
纵深防御和健壮性(故障转移应急和故障安全机制,针对尚未知晓的问题进行恢复).
公平对待用户和客户(即最小化对软件用户和软件服务的其他人的影响).
我正在寻找类似的想法和概念列表.
如果我需要进一步澄清问题并感谢所有人的贡献,请使用评论指出我!
常问问题
开发平台(Java,.NET,移动) - 从开发人员的角度来看肯定会对策略的最终实现细节产生一些影响,但从用户的角度来看则更少.
愚人节肯定不是.我被要求处理的大多数遗留系统没有明确的错误处理策略.
这可以成为社区维基吗? 不,这似乎是一个很好的问题,很难想出好的问题.
这个策略是什么意思?长期计划,提供方向,重点,为错误和异常处理带来一致性和协调性.如果有一个更大的团队从事软件工作,那么该策略可以通过书面形式进行制定和分发.
这似乎是重复的问题(见在Java或C异常管理的最佳实践和哪个,为什么你喜欢的异常或返回代码),这些问题处理上的错误处理(主要是开发者)某个角度来说,我想了解更多关于其他观点以及它们如何为整体战略做出贡献.
这里有很多可能的答案,但我会对它进行分析.
在设计错误和异常处理策略时,应用程序设计人员应该考虑哪些问题?
当你有多个开发人员时,应该很容易"挂钩"你的错误处理框架,否则人们就不会使用它.
明智地使用事务来维护数据一致性.我看到应用程序始终在进程中途发生故障并导致奇怪的数据不一致,因为整个操作没有正确回滚.
处理异常时考虑关键性.例如,如果您有在线订购系统,并且该工作流程的一部分是将电子邮件发送给网站所有者,让他们知道已下达新订单.如果发送该电子邮件失败,用户是否会收到错误并取消整个订单?
策略将如何根据软件类型(COTS,内部业务应用程序,咨询软件,游戏,托管Web应用程序,嵌入式等)而有所不同?软件类型重要吗?
对于桌面类型或嵌入式应用程序,在调查错误报告时,记录有关环境的信息(操作系统版本,硬件,运行的其他应用程序等)非常有用.
对于企业应用程序和Web应用程序,诸如电子邮件错误通知,SMS消息传递以及与ECO工具(例如Tivoli)的集成之类的东西变得非常有用.
道德,政治和法律问题?
我唯一能想到的就是桌面应用程序 - "手机之家"类型的应用程序通常不受欢迎,特别是如果他们提交有关可能敏感的用户机器的信息.
关于错误处理(用户,开发人员,业务支持,管理)的各种观点.
从用户的角度来看,尝试通过设计界面来避免错误,使得他们很难犯错误.不要问用户可能无法回答的问题(中止,重试,任何人失败?)
从开发人员的角度来看,您需要尽可能多的信息来帮助诊断发生的事情 - 堆栈跟踪,环境信息等.
从业务支持和管理的角度来看,他们想知道如何处理错误(主要是在企业环境中) - 谁负责应用程序(我打电话给/ page/etc?)以及关键性以及任何可能的副作用(例如,如果此批处理作业失败,那将影响哪些业务流程?).书面文件是你的朋友.