C# Exceptioncontext 的异常转换为自定义异常给出 null
C# Exceptioncontext's exception converting to custom exception gives null
尝试将 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;
}
}
}
这是我的自定义异常class看起来像
public class DomainException : Exception
{
internal DomainException(string businessMessage)
: base(businessMessage)
{
}
}
我尝试在 DomainException class 中添加一个新的结构来获取异常参数,如下所示。
public class DomainException : Exception
{
internal DomainException(string businessMessage)
: base(businessMessage)
{
}
public DomainException(Exception ex) : base(ex.Message)
{
}
}
没有错误,但在转换为我的 customexception(domainException) 时出现空值?
而不是直接通过 'as' 转换它,您需要显式转换它,因为您的类型 DomainException 与 context.Exception.
不匹配
所以,你可以像下面这样转换它:
DomainException dex = new DomainException(context.Exception.Message);
此外,您可以在任何需要的地方使用 'dex'。
尝试将 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;
}
}
}
这是我的自定义异常class看起来像
public class DomainException : Exception
{
internal DomainException(string businessMessage)
: base(businessMessage)
{
}
}
我尝试在 DomainException class 中添加一个新的结构来获取异常参数,如下所示。
public class DomainException : Exception
{
internal DomainException(string businessMessage)
: base(businessMessage)
{
}
public DomainException(Exception ex) : base(ex.Message)
{
}
}
没有错误,但在转换为我的 customexception(domainException) 时出现空值?
而不是直接通过 'as' 转换它,您需要显式转换它,因为您的类型 DomainException 与 context.Exception.
不匹配所以,你可以像下面这样转换它:
DomainException dex = new DomainException(context.Exception.Message);
此外,您可以在任何需要的地方使用 'dex'。