一. 默认错误处理
beego 框架默认支持 401、403、404、500、503 这几种错误的处理。
如果要跳转到错误页面,结束当前执行流程主要通过控制器的Abort函数实现。
func (this *MainController) Get() {
// 调用Abort函数终止执行,参数是错误类型
this.Abort("500")
// 其他处理逻辑
// .....
this.TplName = "index.tpl"
}
默认情况,调用Abort会展示beego框架默认的错误页面。
二. 自定义错误处理
除了上面那几种错误类型,我们也可以自定义错误类型,自定义个性化的错误页面。
自定义错误处理步骤:
- 定义错误控制器
- 注册错误控制器
(1) 定义错误控制器
package controllers
import (
"fmt"
"github.com/astaxie/beego"
)
// 定义错误控制器
type ErrorController struct {
beego.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) 注册错误控制器
自定义的错误控制器需要在main.go入口文件,向beego框架注册。
package main
import (
_ "btest/routers"
"btest/controllers"
"github.com/astaxie/beego"
)
func main() {
// 注册错误控制器
beego.ErrorController(&controllers.ErrorController{})
beego.Run()
}