2013-04-26 43 views
1

在我的应用程序时出现异常,我需要从业务层 此基础上,错误代码,我需要证明可在消息传递错误代码表示层DB。
我想知道如何传递BL中的错误代码并获取表示层中的错误代码。
对于日志记录异常我使用log4net和企业库4.0。传递错误代码从Exception在C#

在此先感谢

+0

http://stackoverflow.com/questions/7135492/asp-net-displaying-business-layer-errors-in-the-presentation-layer – 2013-04-26 07:07:05

+0

http://stackoverflow.com/questions/2210841/什么是正确的方式传递一个例外-c – Freelancer 2013-04-26 07:08:45

+1

我建议你自己写一个类使用公共静态方法doLogToMyDatabase(String aError);那么当你捕获一个exeption只需调用该方法将写入你的数据库,你需要什么。 – 2013-04-26 07:12:16

回答

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); 
    } 
}