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

时间:2013-04-26 07:04:07

标签: c# exception error-handling log4net

在我的应用程序发生异常时,我需要从业务层传递错误代码 这里基于错误代码到Presentation层,我需要显示DB中可用的消息 我想知道如何从BL传递错误代码并在表示层中获取错误代码 对于记录异常,我使用的是log4net和Enterprise library 4.0。

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以创建自己的继承自Exception的业务异常,并使该类接受您的错误代码。此类将成为您域的一部分,因为它是业务异常。与数据库异常等基础设施异常无关。

public class BusinessException : Exception
{
  public int ErrorCode {get; private set;}

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

您还可以使用枚举或常量。我不知道您的ErrorCode类型。

在您的业务层中,您可以通过以下方式抛出异常:

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

因此,在您的表示层之后,您可以捕获此异常并根据需要进行处理。

public void PresentationMethod()
{
   try
   {
      _bll.BusinessMethod();
   }
   catch(BusinessException be)
   {
      var errorMessage = GetErrorMessage(be.ErrorCode);
      ShowErrorUI(errorMessage);
   }
}