我想使用异常过滤器向文件添加例外。
这是我的ILog
界面。
public interface ILog
{
void Log(Importance importance, Func<string> message);
void Log(Importance importance, Func<string> message, Exception exception);
}
如何在下面的OnExceptipn方法中记录异常?
public class LoggingExceptionFilter : ExceptionFilterAttribute
{
private readonly ILog _log;
public LoggingExceptionFilter(ILogFactory logFactory)
{
_log = logFactory.Create("LoggingExceptionFilter");
}
public override void OnException(ExceptionContext context)
{
// what to do here?
}
}
答案 0 :(得分:1)
你可以像这样抓住异常:
Exception ex = context.Exception;
然后使用您的库记录异常。
在此之后您想要做的其他事情取决于您 - 是否要继续执行,或者向客户端返回错误。例如,我在我的Web API项目中有这个片段,以返回适当的HTTP错误代码:
HttpStatusCode statuscode;
if (context.Exception is HttpResponseException)
{
var HTTPex = (HttpResponseException)context.Exception;
statuscode = HTTPex.Response.StatusCode;
}
else
{
statuscode = HttpStatusCode.InternalServerError;
}
context.response = response;