【发布时间】:2009-01-23 21:12:56
【问题描述】:
由于我不能以 Microsoft 作为最佳实践的示例,因为他们的异常消息是出于必要而存储在资源文件中的,所以我不得不问应该将异常消息存储在哪里。
我想这可能是我想到的常见地点之一
- 默认资源文件
- 局部常量
- 类常量
- 全局异常消息类
- 作为字符串字面量内联
【问题讨论】:
由于我不能以 Microsoft 作为最佳实践的示例,因为他们的异常消息是出于必要而存储在资源文件中的,所以我不得不问应该将异常消息存储在哪里。
我想这可能是我想到的常见地点之一
【问题讨论】:
我可能会因此而被枪决(好吧,被否决),但为什么不“在哪里创建异常”?
throw new InvalidDataException("A wurble can't follow a flurble");
除非您要将异常消息 (which I suggest you don't) 国际化,否则您是否特别需要它们成为常量等?好处在哪里?
【讨论】:
如果您的异常是强类型的,则无需担心消息。消息用于向用户呈现错误,异常用于控制异常情况下的流程。
throw new InvalidOperationException("The Nacho Ordering system is not responding.");
可以变成
throw new SystemNotRespondingException("Nacho Ordering");
在后一种情况下,无需翻译,因此无需担心本地化问题。
【讨论】:
出于需要?这是为了简化本地化。在您的应用程序中本地化错误消息,这是一个很好的方法。
【讨论】:
如果您不打算向用户显示异常消息,那么您需要将它们与您确实需要翻译的资源字符串分开。
如果你有很多重复的字符串,要么使用 Jon 建议的字符串文字,要么创建一个实用程序类来保存它们。
【讨论】: