在何处定义错误消息

本文关键字:消息 错误 定义 在何处 | 更新日期: 2023-09-27 18:36:59

我正在制作我的第一个"真正的"C#程序,我正在考虑应该在哪里定义错误消息?我应该做这样的事情吗:

static class Error
{
    public static string Example { get { return "Example Error"; } }
}

也可以在这里使用值而不是属性,但这仍然意味着我不能做这样的事情:

public static string FailedToParse(string filepath, string exmessage)
{
    return ("Failed to parse " + filepath + ".'n" + exmessage);
}

那么,这是一个好主意吗?我应该创建一个新类并为每个错误编写一个方法吗?你们如何实现这一点,为什么?

我已经读过了

  1. 在 C# 中,存储程序使用的一组常量的最佳方法是什么?
  2. 使用全局常量的正确方法

在何处定义错误消息

我认为这是每个人都应该自己弄清楚的事情。

一个喜欢向用户显示漂亮的消息,另一个只是抛出那些默认生成的消息。

就个人而言,我喜欢有错误的代码。

像这样:

我创建了一个名为 ExceptionFactory 的静态类,并将代码传递给名为 RaiseException 的方法。

public static class ExceptionRegions
{
  public static int Internet = 0xA;
  public static int FileSystem = 0xB;
}
public class InternetConnectionException : Exception
{
  public InternetConnectionException () : base("No internet connection available") { }
}
public class FileSystemAccessException : Exception
{
  public FileSystemAccessException () : base("Access to specified path caused an error") { }
}
public static class ExceptionFactory
{
  public static void RaiseException(int code)
  {
    switch(code)
    {
      case ExceptionRegions.Internet : throw new InternetConnectionException();
      ...
      ...
    }
  }
}

顺便说一句,这是一种众所周知的模式,称为工厂模式。 :)

为什么我喜欢这个,因为它允许我在应用程序中设置区域。通常一个应用程序有许多接口,如文件系统、Web 服务或数据库,我需要做的就是为每个区域创建一个代码,工厂将向用户抛出一条很好的消息,而不会暴露数据库的用户名和代码行的数量或任何默认生成的错误消息看起来相似。