一架梯子,一头程序猿,仰望星空!

beego 错误处理


在web开发的中时候,如果遇到错误,例如: 404, 500错误等等,我们一般都会展示一个错误页面提示用户,beego默认提供了一些内置的错误页面,本章主要介绍如使用错误页面和定制错误页面。

1.默认错误处理

beego 框架默认支持 401、403、404、500、503 这几种错误的处理。

如果要跳转到错误页面,结束当前执行流程主要通过控制器的Abort函数实现。

例子:

func (this *MainController) Get() {
    // 调用Abort函数终止执行,参数是错误类型
    this.Abort("500")
    
    // 其他处理逻辑
    // .....
    
    this.TplName = "index.tpl"
}

默认情况,调用Abort会展示beego框架默认的错误页面。

2.自定义错误处理

除了上面那几种错误类型,我们也可以自定义错误类型,自定义个性化的错误页面。

自定义错误处理步骤:

  1. 定义错误控制器
  2. 注册错误控制器

2.1. 定义错误控制器

package controllers

import (
	"fmt"
	"github.com/beego/beego/v2/server/web"
)

// 定义错误控制器
type ErrorController struct {
	web.Controller
}

// 定义404错误, 调用例子: this.Abort("404")
func (this *ErrorController) Error404() {
    // 模板参数
	this.Data["content"] = "页面不见了"
	
	// 自定义404错误页面模板
	this.TplName = "404.tpl"
}

// 定义500错误, 调用例子: this.Abort("500")
func (this *ErrorController) Error500() {
	this.Data["content"] = "服务跑了"
	this.TplName = "500.tpl"
}


// 定义db错误, 调用例子: this.Abort("Db")
func (this *ErrorController) ErrorDb() {
	this.Data["content"] = "数据库挂逼了"
	this.TplName = "dberror.tpl"
}

提示: 自定义错误的函数名格式为: ErrorXXX , XXX就是我们要定义的错误类型,展示错误则调用this.Abort("XXX")

2.2. 注册错误控制器

自定义的错误控制器需要在main.go入口文件,向beego框架注册。

package main

import (
    _ "btest/routers"
    "btest/controllers"

    "github.com/beego/beego/v2/server/web"
)

func main() {
    // 注册错误控制器
    web.ErrorController(&controllers.ErrorController{})
    web.Run()
}