当尝试将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)时得到空值?
答案 0 :(得分:1)
您不仅需要直接通过'as'进行转换,还需要显式转换它,因为您的DomainException类型与context.Exception不匹配。
因此,您可以将其转换如下:
DomainException dex = new DomainException(context.Exception.Message);
进一步,您可以在任何需要的地方使用“ dex”。