【发布时间】:2019-05-20 20:52:17
【问题描述】:
当尝试将 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) 时没有错误但得到一个空值?
【问题讨论】:
-
null表示不是DomainException -
我必须修改 DomainException 类以接受我在第三个代码块中提到的异常上下文,我已经在我的类中进行了更改,但它仍然为空。
-
Operator as 实际上并不转换任何东西,它只会尝试转换并在类型不兼容时返回
null。在您的情况下,这意味着context.Exception不是DomainException的派生词。您需要显式调用构造函数来执行您尝试执行的转换。
标签: c# asp.net-mvc-4 exception-handling asp.net-web-api2