C# 异常消息应该存储在哪里

C# 异常消息应该存储在哪里,c#,exception,resources,C#,Exception,Resources,由于我不能将Microsoft作为最佳实践的示例,因为出于必要,他们的异常消息存储在资源文件中,所以我不得不问,异常消息应该存储在哪里 我想这可能是我想到的常见地点之一 默认资源文件 局部常数 类常数 全局异常消息类 内联为字符串文本 出于必要?这是为了简化本地化。要在应用程序中本地化错误消息,这是一个很好的方法。我可能会因此而被枪毙(嗯,被否决),但为什么不“在哪里创建异常”呢 除非您要国际化异常消息(),否则您是否特别需要它们是常量等?好处在哪里?如果不打算向用户显示异常消息,则需要将它们

由于我不能将Microsoft作为最佳实践的示例,因为出于必要,他们的异常消息存储在资源文件中,所以我不得不问,异常消息应该存储在哪里

我想这可能是我想到的常见地点之一

  • 默认资源文件
  • 局部常数
  • 类常数
  • 全局异常消息类
  • 内联为字符串文本

    • 出于必要?这是为了简化本地化。要在应用程序中本地化错误消息,这是一个很好的方法。

      我可能会因此而被枪毙(嗯,被否决),但为什么不“在哪里创建异常”呢


      除非您要国际化异常消息(),否则您是否特别需要它们是常量等?好处在哪里?

      如果不打算向用户显示异常消息,则需要将它们与需要翻译的资源字符串分开


      如果有大量重复字符串,可以使用Jon建议的字符串文本,也可以创建一个实用程序类来保存它们。

      如果您的异常是强类型的,则无需担心消息。消息用于向用户显示错误,异常用于在异常情况下控制流

      throw new InvalidOperationException("The Nacho Ordering system is not responding.");
      
      可能成为

      throw new SystemNotRespondingException("Nacho Ordering");
      

      在后一种情况下,无需翻译,因此无需担心本地化。

      异常消息通常与用户可见的错误消息不同。虽然用本地语言显示错误消息可能不合适,但作为平台供应商,Microsoft有必要这样做。但对于许多项目,我使用了字符串文本。然而,我认为如果你真的想把它存储在某个地方,它应该是资源文件,而不是常量或其他类型的东西。这是当前许多消息的位置,但这导致了本质上相同的例外在措辞上的细微变化。此外,有时消息非常冗长,这可能导致它从屏幕上消失。Orion,在这种情况下,我认为您应该使用不同的异常类在其构造函数中设置消息。这将统一信息。好的,没关系。如果你的信息太长,那么尽量减少它们。它们不必是一整句华丽的散文——只要有足够的信息就能完成任务。我看不出在这里使用资源文件会有什么帮助。措辞的变化也不重要。我盯着屏幕的顶部看我的“Jon Skeet协议”金徽章
      throw new SystemNotRespondingException("Nacho Ordering");