spring boot 拦截全局异常并通过 webhook 发送到钉钉机器人
2019-05-26 09:41:51
当后端程序由于各种原因出错时,如果将错误信息直接抛给客户端,用户肯定会一脸懵逼,除非当时的用户是你们的开发,本文主要讲述如果拦截全局异常,不把异常抛给用户,同时,如果做过客户端,应该知道,Android 和 ios 都有第三方 crash 上报平台,如果能在出错后发消息到钉钉则很方便,本文主要解决这两件事。
spring boot 拦截全局异常
拦截异常主要使用 @ControllerAdvice 注解,具体来讲就是,新建一个包,比如 crash,然后新建一个类比如 GlobalDefaultExceptionHandler,这个类的代码如下:
|
|
这里,我获取了用户请求的 url,以及参数,然后调用了钉钉机器人,总结起来,要拦截全局异常,只需要: 新增一个类,这个类添加 @ControllerAdvice 注解 然后这个类里写一个处理异常的方法,这个方法添加 @ExceptionHandler(Exception.class) 和 @ResponseBody 注解,前者的意思是,这个方法可以处理所有的 Exception ,后者的意思是重写返回的数据(没错,这么理解更简单),这就够了。但是这里,我增加了获取用户上传的 json 字符串以及发送到钉钉机器人,而且还发送到了自建的 sentry 上面,钉钉机器人文档可参考:
https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq
DingTalkMessage 源码如下:
|
|
DingTalkMessageBuilder 源码如下:
|
|
最后更新于