你是否用句点结束了异常消息?

Svi*_*ish 54 c# coding-style exception messages

我已经看到有和没有句号的两个异常消息.而且我可以想到为什么两者都可能是好的一些原因.

  • 如果您愿意,没有任何点可以让您自由添加句点或将其留下.如果消息出现在某种标题栏或其他内容中,则可能很有用.
  • 用一个圆点,你总会知道你有一个"完整的句子",它看起来更完整.

你推荐哪一个?

也可能是本地化资源字符串中的问题.显然你不能在一切之后放一段时间(在按钮和菜单项等文本之后的句点看起来很奇怪).但是,你是否应该把时间从一切都保持一致,然后在有用的地方添加它?或者你宁愿把它看作适合的时期吗?例如,在所有资源字符串和异常消息之后是句子,而不是在那些字之后.但那么,非常短的句子怎么样?比如"创建新文件".也许可以省去被认为是行动的字符串...(只是在我在这里打字的时候想...

我知道,这不是世界上最重要的事情.但像这样的小事情会在一段时间后给我带来麻烦.我喜欢一致性,知道为什么我会这样做.问题是我不确定应该选择哪一个:p

Fre*_*örk 46

是的我通常将异常消息视为完整句子,以句点结束.

但是,异常中的消息是针对开发人员的,而不是最终用户.很可能相同的底层异常应该为最终用户产生两个不同的消息,具体取决于调用异常抛出方法的上下文.

您真的应该向用户显示技术性更强,用户友好的消息.

  • +1与.NET框架保持一致. (7认同)

Dav*_*dRR 36

问:您是否以句点结束了异常消息?

来自MSDN的"创建和提出例外"部分中的例外最佳实践:

  • 使用语法正确的错误消息,包括结束标点符号.异常的描述字符串中的每个句子都应以句点结尾.例如,"日志表已溢出."将是一个适当的描述字符串.

关于通过应用程序用户界面向用户提供的可能反馈,问题包括:

...也可能是本地化资源字符串中的问题.

上面引用的MSDN文章还指出:

  • 在每个异常中包含本地化描述字符串.用户看到的错误消息是从抛出的异常的描述字符串派生的,而不是从异常类派生的.

此外,从"备注"部分开头的Exception.Message Property :

错误消息以处理异常的开发人员为目标.Message属性的文本应该完整地描述错误,并且在可能的情况下,还应该解释如何更正错误.顶级异常处理程序可以向最终用户显示消息,因此您应该确保它在语法上是正确的,并且消息的每个句子都以句点结束.不要使用问号或感叹号.如果您的应用程序使用本地化的异常消息,则应确保准确转换它们.


.NET Framework 4.6和4.5

  • 无法相信引用官方来源的唯一答案是零票!这个应该被赞成,因为它遵循"记录"答案的stackoverflow指南. (2认同)

Pao*_*sco 8

框架中的异常消息以点终止; 因为这个原因,我倾向于这样做.
在任何情况下,选择一种风格,并试着坚持......


Dav*_*kle 6

我总是在我的异常描述中使用句点.一个简单的事实是,正确标点的句子更容易阅读,更专业,这对于感知质量很重要 - 你不觉得吗?

比较它:

我总是在我的异常描述中使用句点,简单的事实是,正确标点的句子更容易阅读,更专业的外观,这对于感知质量很重要你不认为

  • 我认为不向最终用户显示异常消息会使感知质量更高. (3认同)
  • @Anders - 取决于你如何展示它.如果它被捕获并正确呈现给用户,则异常可能非常专业.未捕获的?好吧,那只是一场大崩溃! (2认同)

Cri*_*urf 5

异常消息构成应用程序开发人员界面的一部分。界面的设计通常是为了帮助用户执行某些特定任务。在发生异常的情况下,所提供的接口应设计为传达有关应用程序中发生的错误的信息。

当您决定抛出异常并编写如下行时

throw new ArgumentException("The string must contain at least one character.");
Run Code Online (Sandbox Code Playgroud)

那么您已经对界面做出了许多决定,包括:

  • 异常类型
  • 缺乏本地化异常消息(使用硬编码字符串通常意味着这一点)
  • 此异常不是任何其他条件的结果(无内部异常)

请记住,开发人员界面的存在是为了服务开发人员,而用户界面的存在是为了服务用户,前者的要求与后者有很大不同,因此对一个人有利的可能对另一个人不利,因此异常消息中应该出现一个句点不关心用户界面,因为它不应该对最终用户可见。

在大多数情况下,使用句号并不是一个重大决定,但您应该通过考虑已经提出的观点(包括框架一致性和本地化)来考虑它的存在(或缺乏)对界面是否有益或有害。

我知道这篇文章有点啰嗦,可能有点天文学,但我希望它对你有帮助。