全局异常过滤器

public class ApiExceptionFilter:ExceptionFilterAttribute
{
private IHostingEnvironment _env;
public ApiExceptionFilter(IHostingEnvironment env)
{
_env = env;
} public override void OnException(ExceptionContext context)
{
if (context.ExceptionHandled)
{
return;
} var exMsg = context.Exception.Message;
ApiResp resp = new ApiResp(ApiRespCode.E999999,exMsg);
// 开发环境显示异常信息
if(_env.IsDevelopment())
{
resp.Message = exMsg;
}
context.Result = new JsonResult(resp);
context.ExceptionHandled = true;
}
}

在startup添加这个异常过滤器

services.AddMvc(options=>
{
options.MaxModelValidationErrors = ;
// 自定义model验证
options.Filters.Add<VldFilter>();
// 异常捕获
options.Filters.Add<ApiExceptionFilter>();
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

在原来的api中写一个简单的测试方法。响应报文的默认构造函数中的message使用自定义的枚举扩展方法获取枚举的message属性,如果是开发环境,将这个message替换为异常信息,调试会比较方便。

[HttpGet]
public void test()
{
int a = ;
int c = / a;
}

局部异常

当正常请求进来时,有些时候,我们的接口需要一些条件无法满足,这个时候可以手动抛出异常,因为封装了全局响应报文,这样不会影响系统使用。

public class ApiException:Exception
{
public ApiException() { } public ApiException(string message) : base(message) { } public ApiException(string message,Exception ex) : base(message, ex) { } public ApiException(ApiRespCode apiRespCode) : base(ApiEnum.GetMessage(apiRespCode)) { }
}

在需要地方就可以这样抛出异常:

throw new ApiException(ApiRespCode.E999999);

WebApi 全局异常与局部异常的更多相关文章

  1. 异常检测——局部异常因子(Local Outlier Factor ,LOF)算法

    在中等高维数据集上执行异常值检测的另一种有效方法是使用局部异常因子(Local Outlier Factor ,LOF)算法.1.算法思想 LOF通过计算一个数值score来反映一个样本的异常程度.这 ...

  2. Struts局部异常与全局异常处理

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAowAAAG3CAIAAACxBJNyAAAgAElEQVR4nOy9z6tk15Ymdv4B0eRU8O

  3. springmvc处理局部异常和全局异常

    springmvc通过HandlerExceptionResolver(是一个接口,在spring-webmvc依赖下)处理程序异常,包括处理器异常.数据绑定异常以及处理器执行时发生的异常.Handl ...

  4. @ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常==》记录

    对于与数据库相关的 Spring MVC 项目,我们通常会把 事务 配置在 Service层,当数据库操作失败时让 Service 层抛出运行时异常,Spring 事物管理器就会进行回滚. 如此一来, ...

  5. 转:@ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常

    继承 ResponseEntityExceptionHandler 类来实现针对 Rest 接口 的全局异常捕获,并且可以返回自定义格式: 复制代码 1 @Slf4j 2 @ControllerAdv ...

  6. Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息

    Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...

  7. 【统一异常处理】@ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常

    1.利用springmvc注解对Controller层异常全局处理 对于与数据库相关的 Spring MVC 项目,我们通常会把 事务 配置在 Service层,当数据库操作失败时让 Service ...

  8. ASP.NET全局错误处理和异常日志记录以及IIS配置自定义错误页面

    应用场景和使用目的 很多时候,我们在访问页面的时候,由于程序异常.系统崩溃会导致出现黄页.在通常的情况下,黄页对于我们来说,帮助是极大的,因为它可以帮助我们知道问题根源,甚至是哪一行代码出现了错误.但 ...

  9. 第25章 SEH结构化异常处理_未处理异常及向量化异常

    25.1 UnhandledExceptionFilter函数详解 25.1.1 BaseProcessStart伪代码(Kernel32内部) void BaseProcessStart(PVOID ...

随机推荐

  1. 使用Neo4j分析《权力的游戏》

    几个月前,数学家 Andrew Beveridge和Jie Shan在数学杂志上发表<权力的网络>,主要分析畅销小说<冰与火之歌>第三部<冰雨的风暴>中人物关系,其 ...

  2. 到达型01背包---P1504 积木城堡

    P1504 积木城堡 题解 到达型01背包 对于每一组城堡,它可以到达一些高度 但是我们要求的是所有背包可以到达的公共高度的最大值 f[ i ] 表示对于一组城堡,能否到达高度 j ,然后我们跑 n ...

  3. IntelliJ IDEA中构建spring-boot项目

    1. 打开 IDEA ,新建项目 2. 选择Spring Initializr 并在 Choose Initializr Service URL 填入 https://start.spring.io ...

  4. java 获取String中的数字

    随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取出来呢?大致有以下几种方法, ...

  5. SQL 模糊查询条件的四种匹配模式

    转: 执行数据库查询时,有完整查询和模糊查询之分. 一般模糊语句格式如下: SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件; 其中,关于条件,SQL提供了四种匹配模式: 1.%: ...

  6. jQuery补充之jQuery扩展/form表单提交/滚动菜单

    jQuery扩展 为了避免重复造轮子,能高效使用别人的代码,所以有了扩展. jQuery扩展有两种方式: 自执行函数方式 定义函数,并执行函数. 自执行函数: (function(jq){ jq.ex ...

  7. LeetCode_141. Linked List Cycle

    141. Linked List Cycle Easy Given a linked list, determine if it has a cycle in it. To represent a c ...

  8. spring security4.1.3配置以及踩过的坑

    https://blog.csdn.net/honghailiang888/article/details/53520557 spring security完全可以作为一个专门的专题来说,有一个专题写 ...

  9. Python3之错误处理

    在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及错误的原因.在操作系统提供的调用中,返回错误码非常常见.比如打开文件的函数open(),成功时返回文件描 ...

  10. Unity与Android刘海屏适配

    本周学习Unity与Android刘海屏适配 关于刘海屏适配部分 网上有很多教程 这里只是做一下整理 https://blog.csdn.net/xj1009420846/article/detail ...