在编写抛出我在这里询问的异常的代码时,我走到了我的消息的末尾,并在标点符号处停了下来.我意识到几乎所有我抛出的异常消息都可能有!某处.
throw new InvalidOperationException("I'm not configured correctly!"); throw new ArgumentNullException("You passed a null!"); throw new StupidUserException("You can't divide by 0! What the hell were you THINKING??? DUMMY!!!!!");
在编写异常消息时你会采取什么样的语气?在浏览日志时,您是否发现任何特定类型的消息实际上比另一种更有帮助?
只是事实上.包括调试时可能需要的所有信息,但不多于此.
我唯一一次在异常消息中包含感叹号,如果它表明发生了真正奇怪的事情.大多数错误并不是奇怪的,只是不正确的环境,用户错误或简单的编程错误的产物.
我尝试反映我编码的框架的语气,语法和标点符号样式.你永远不知道其中一条消息何时可能真正在客户或用户面前出现,所以我保持一切专业,非评判性和具体到足以进行故障排除 - 而不是特别提出任何安全问题.码.
我在所有字符串(UI和异常)中都避免使用感叹号,例如瘟疫,除了(偶然)在我的单元测试中.
系统消息中的对话音使该软件看起来不专业且草率。感叹号,侮辱和语在完善的异常消息中实际上没有位置。
另外,我倾向于将Java中的不同样式用于运行时异常和已检查的异常,因为运行时异常是针对犯错的程序员的。由于运行时异常可能会显示给最终用户,因此我仍然“保持它的整洁”,但是它们可能更简洁和晦涩。已检查的异常消息应该更有用,因为如果您描述问题,则可能是用户可以解决问题(例如,找不到文件,磁盘已满,没有通往主机的路由等)。
在缺少信息例外的特定字段的情况下,有帮助的一件事是有问题的数据:
throw new IndexOutOfBoundsException("offset < 0: " + off);