C#Exceptioncontext的异常转换为自定义异常给出null

时间:2018-12-20 10:32:47

标签: c# asp.net-mvc-4 exception-handling asp.net-web-api2

当尝试将context.Exception转换为DomainException时,我总是得到null

public class DomainExceptionFilter : IExceptionFilter
{
    public void OnException(ExceptionContext context)
    {
        DomainException domainException = context.Exception as DomainException; // context.Exception is not null whereas
        if (domainException != null) // always null
        {
            string json = JsonConvert.SerializeObject(domainException.Message);

            context.Result = new BadRequestObjectResult(json);
            context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
        }
    }
}

这是我的自定义异常类,

public class DomainException : Exception
{
    internal DomainException(string businessMessage)
        : base(businessMessage)
    {
    }
}

我尝试在DomainException类中添加新的构造以采用异常参数,如下所示。

public class DomainException : Exception
{
    internal DomainException(string businessMessage)
        : base(businessMessage)
    {
    }
    public DomainException(Exception ex) : base(ex.Message)
    {

    }
}

没有错误,但是在转换为我的customexception(domainException)时得到空值?

1 个答案:

答案 0 :(得分:1)

您不仅需要直接通过'as'进行转换,还需要显式转换它,因为您的DomainException类型与context.Exception不匹配。

因此,您可以将其转换如下:

DomainException dex = new  DomainException(context.Exception.Message);

进一步,您可以在任何需要的地方使用“ dex”。