go-zero 全局异常处理-全局中间件

本文介绍了如何在Go-Zero框架中使用全局中间件捕获并处理异常,包括通过`server.Use(middleware.WithMiddleware)`注册中间件,以及使用`defer`和`recover`进行异常恢复,并通过自定义错误处理函数返回统一的错误响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在主入口新增

package main

import (
	"flag"
	"fmt"
	"go/application/internal/config"
	"go/application/internal/handler"
	"go/application/internal/middleware"
	"go/application/internal/svc"
	manage "go/pkg/manage"

	"github.com/zeromicro/go-zero/core/conf"
	"github.com/zeromicro/go-zero/rest"
	"github.com/zeromicro/go-zero/rest/httpx"
)

var configFile = flag.String("f", "etc/service-api.yaml", "配置文件")

func main() {

	flag.Parse()

	var c config.Config

	// 读取配置文件中的值,将其保存在c变量上  所以这一块传递的是地址
	conf.MustLoad(*configFile, &c)

	// 将全局配置保存在全局变量上
	config.GlobalConfig = c

	// 注册服务,传递服务配置
	server := rest.MustNewServer(c.RestConf)

	// 全局中间件  这儿主要用来捕获一下全局的异常,抛出给前端
	server.Use(middleware.WithMiddleware)

	// 停止服务
	defer server.Stop()

	// 为上下文赋值  将常用的方法绑定在上下文当中(redis、orm等等)
	ctx := svc.NewServiceContext(c)

	// 注册路由
	handler.RegisterHandlers(server, ctx)

	// 统一错误处理
	httpx.SetErrorHandler(manage.ErrHandler)

	fmt.Printf("Starting server at %s:%d...\n", c.Ho
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值