Svi*_*ish 54 c# coding-style exception messages
我已经看到有和没有句号的两个异常消息.而且我可以想到为什么两者都可能是好的一些原因.
你推荐哪一个?
也可能是本地化资源字符串中的问题.显然你不能在一切之后放一段时间(在按钮和菜单项等文本之后的句点看起来很奇怪).但是,你是否应该把时间从一切都保持一致,然后在有用的地方添加它?或者你宁愿把它看作适合的时期吗?例如,在所有资源字符串和异常消息之后是句子,而不是在那些字之后.但那么,非常短的句子怎么样?比如"创建新文件".也许可以省去被认为是行动的字符串...(只是在我在这里打字的时候想...
我知道,这不是世界上最重要的事情.但像这样的小事情会在一段时间后给我带来麻烦.我喜欢一致性,知道为什么我会这样做.问题是我不确定应该选择哪一个:p
Fre*_*örk 46
是的我通常将异常消息视为完整句子,以句点结束.
但是,异常中的消息是针对开发人员的,而不是最终用户.很可能相同的底层异常应该为最终用户产生两个不同的消息,具体取决于调用异常抛出方法的上下文.
您真的应该向用户显示技术性更强,用户友好的消息.
Dav*_*dRR 36
问:您是否以句点结束了异常消息?
来自MSDN的"创建和提出例外"部分中的例外最佳实践†:
- 使用语法正确的错误消息,包括结束标点符号.异常的描述字符串中的每个句子都应以句点结尾.例如,"日志表已溢出."将是一个适当的描述字符串.
关于通过应用程序用户界面向用户提供的可能反馈,问题包括:
...也可能是本地化资源字符串中的问题.
上面引用的MSDN文章还指出:
- 在每个异常中包含本地化描述字符串.用户看到的错误消息是从抛出的异常的描述字符串派生的,而不是从异常类派生的.
此外,从"备注"部分开头的Exception.Message Property †:
错误消息以处理异常的开发人员为目标.Message属性的文本应该完整地描述错误,并且在可能的情况下,还应该解释如何更正错误.顶级异常处理程序可以向最终用户显示消息,因此您应该确保它在语法上是正确的,并且消息的每个句子都以句点结束.不要使用问号或感叹号.如果您的应用程序使用本地化的异常消息,则应确保准确转换它们.
† .NET Framework 4.6和4.5
我总是在我的异常描述中使用句点.一个简单的事实是,正确标点的句子更容易阅读,更专业,这对于感知质量很重要 - 你不觉得吗?
比较它:
我总是在我的异常描述中使用句点,简单的事实是,正确标点的句子更容易阅读,更专业的外观,这对于感知质量很重要你不认为
异常消息构成应用程序开发人员界面的一部分。界面的设计通常是为了帮助用户执行某些特定任务。在发生异常的情况下,所提供的接口应设计为传达有关应用程序中发生的错误的信息。
当您决定抛出异常并编写如下行时
throw new ArgumentException("The string must contain at least one character.");
Run Code Online (Sandbox Code Playgroud)
那么您已经对界面做出了许多决定,包括:
请记住,开发人员界面的存在是为了服务开发人员,而用户界面的存在是为了服务用户,前者的要求与后者有很大不同,因此对一个人有利的可能对另一个人不利,因此异常消息中应该出现一个句点不关心用户界面,因为它不应该对最终用户可见。
在大多数情况下,使用句号并不是一个重大决定,但您应该通过考虑已经提出的观点(包括框架一致性和本地化)来考虑它的存在(或缺乏)对界面是否有益或有害。
我知道这篇文章有点啰嗦,可能有点天文学,但我希望它对你有帮助。