统一异常处理
当存在大量方法的时候,如果每一个都单独处理异常,那是一件相当繁琐的工作。组件可以基于过虑器来实现统一异常处理和响应,实现起来也非常简单。
制定异常过虑器
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"); }
以上方法是抛出一个异常,经过过虑器处理后响应结果是:

访问Beetlex的Github

浙公网安备 33010602011771号