-
-
Notifications
You must be signed in to change notification settings - Fork 175
统一异常处理
Henry edited this page Sep 10, 2019
·
2 revisions
当存在大量方法的时候,如果每一个都单独处理异常,那是一件相当繁琐的工作。组件可以基于过虑器来实现统一异常处理和响应,实现起来也非常简单。
public class CatchException : FilterAttribute
{
public override void Executed(ActionContext context)
{
base.Executed(context);
if (context.Exception != null)
{
context.Result = new TextResult(context.Exception.Message);
context.Exception = null;
}
}
}
实现Executed
方法,判断当前处理上下是否存在异常,如果存在则返回自定义的IResult
,并把上下文的异常清空,如果不清空组件会对外抛InnerErroResult
mApiServer.ServerConfig.Filters.Add(new CatehException());
mApiServer.Register(typeof(Program).Assembly);
添加全局过虑器,必须在注册控制器前添加。
public void Throw()
{
throw new Exception("hello");
}
以上方法是抛出一个异常,经过过虑器处理后响应结果是: