我正在阅读一些C#书籍,并且进行了一些练习,不知道该怎么做,或者不确定这个问题是什么意思。
问题:
在为公司工作一段时间之后,您作为知识渊博的开发人员的技能得到认可,并且您将被赋予“监管”异常处理和跟踪的实施的任务,该源代码(C#)用于企业应用程序正在不断增量发展。产品架构师设定的两个目标是:
整个应用程序中100%的方法必须至少有一个标准的异常处理程序,使用try / catch / finally块;更复杂的方法还必须对特定异常进行额外的异常处理
在传统调试器不可用的情况下(例如,在登台和生产服务器上),所有控制流代码都可以选择编写“跟踪”信息,以帮助在运行时调试和检测应用程序。
(我不太明白这些标准,我来自java世界,java有两种异常,检查和未经检查的异常。开发人员必须处理检查异常,并做日志。关于未经检查的异常,仍然可以记录,但是大多数时候我们只是抛出它。但是这里有C#,我该怎么办?)
问题:
列出您要为开发团队制定的规则,以及实施这些目标的实施方式。
您如何确保所有现有代码都符合产品架构师指定的规则;特别是,哪些因素会影响您的工作规划,以确保所有现有代码符合要求?
答案 0 :(得分:4)
正如您所提到的,Java已经检查并取消选中了异常。对于已检查的异常,您必须声明方法抛出它,或者在方法中处理异常。 C#没有这个限制,你的方法不必声明它可能抛出的异常。
整个应用程序中100%的方法必须至少有一个标准的异常处理程序,使用try / catch / finally块;更复杂的方法还必须对特定异常进行额外的异常处理
这似乎是一个愚蠢的要求。如果没有有意义的方法从异常中恢复并继续正常执行,那么理想情况下允许异常不受阻碍地冒泡堆栈。这样,当您记录异常时(在正常关闭之前或不那么优雅地关闭之前),您将拥有完整的堆栈跟踪,了解究竟是什么导致了异常。使用pokemon exception handling并过早记录异常是一个非常常见的错误(从我见过的代码中)(所以你知道发生了一些不好的事情,但不知道是什么代码触发了它。
您还应该查看this list of similar question以获得良好的异常处理实践的概述。
好的衡量标准Vexing exceptions。
答案 1 :(得分:0)
定义应用程序体系结构后,应确定如何处理应用程序生成的异常。策略应该是满足所有安全性,隐私和性能要求。以下是异常处理策略的一般准则: