在Java web开发过程中,我们经常会涉及到对于全局异常的捕获,这样子可以保证把系统抛出的所有异常信息通过我们固定的数据格式进行返回。在go语言中我们也会需要用到,因此这里的话,我们来实现一下全局异常的案例。
在go语言中,全局异常的实现主要是通过中间件来完成的,即编写一个全局异常的处理类,然后在项目启动的时候注册到中间件即可。下面我们来实现一下。
一、创建全局异常类
我们在middlerware包下创建一个responsejson.go的文件,我们把全局异常的代码写入这里面。示例图如下:
二、全局异常处理
全局异常的方法处理非常简单,主要是对请求进行拦截,然后获取到最后一个错误,再拼接固定的格式返回给客户端即可。完整的全局异常实例代码如下:
func GlobalErrorMiddleware() gin.HandlerFunc { return func(c *gin.Context) { //先执行请求 c.Next() // 发生了错误 if len(c.Errors) > 0 { //获取最后一个error 返回 err := c.Errors.Last() Fail(c, http.StatusInternalServerError, err.Error()) return } } }
三、注册全局异常
最后我们在项目启动的时候注册这个中间件即可,示例图如下:
四、演示验证效果
接下来我们演示一下这里全局异常是否捕获了,比如我们这里给字段添加一个验证器,登录的request里面username必须大于5个字符串长度
然后我们登录的时候传递用户名字符长度小于5,看看效果:
可以看到返回的错误信息和我们规定的返回数据格式是完全一致的,这样子可以保证前端不用编写多个适配的数据结构来解析我们的错误信息。
以上就是go语言中使用gin框架编写go web程序的全局异常处理的案例,最后附上本案例的源码,登陆后即可下载。
还没有评论,来说两句吧...