在c#中从异常传递错误代码

Passing Error Code from Exception in c#

本问题已经有最佳答案,请猛点这里访问。

在我的应用程序中,当发生异常时,我需要从业务层传递错误代码。基于错误代码,我需要显示数据库中可用的消息。我想知道如何从BL传递错误代码并在表示层中获取错误代码。对于日志异常,我使用log4net和企业库4.0。

提前谢谢


您可以创建继承自Exception的自己的业务异常,并使类接受您的错误代码。这个类将是您的域的一部分,因为它是一个业务异常。与基础结构异常(如数据库异常)无关。

1
2
3
4
5
6
7
8
9
public class BusinessException : Exception
{
  public int ErrorCode {get; private set;}

  public BusinessException(int errorCode)
  {
     ErrorCode = errorCode;
  }
}

也可以使用枚举或常量。我不知道你的错误代码类型。

在业务层中,可以通过以下方式引发异常:

1
2
3
throw new BusinessException(10);  //If you are using int
throw new BusinessException(ErrorCodes.Invalid); //If you are using Enums
throw new BusinessException("ERROR_INVALID"); //

所以在您的表示层中,您可以捕获这个异常并根据需要处理它。

1
2
3
4
5
6
7
8
9
10
11
12
public void PresentationMethod()
{
   try
   {
      _bll.BusinessMethod();
   }
   catch(BusinessException be)
   {
      var errorMessage = GetErrorMessage(be.ErrorCode);
      ShowErrorUI(errorMessage);
   }
}