beego 如何自定error

beego使用及源码解析二(config配置模块) 一.配置beego 阅读详情

我们在做 Web 开发的时候,经常会遇到页面调整和错误处理,beego 这这方面也进行了考虑,通过 Redirect 方法来进行跳转:

func (this *AddController) Get() {
    this.Redirect("/", 302)
}

如何中止此次请求并抛出异常,beego 可以在控制器中这操作:

func (this *MainController) Get() {
    this.Abort("401")
    v := this.GetSession("asta")
    if v == nil {
        this.SetSession("asta", int(1))
        this.Data["Email"] = 0
    } else {
        this.SetSession("asta", v.(int)+1)
        this.Data["Email"] = v.(int)
    }
    this.TplNames = "index.tpl"
}

这样 this.Abort("401") 之后的代码不会再执行,而且会默认显示给用户如下页面:

beego 框架默认支持 404、401、403、500、503 这几种错误的处理。用户可以自定义相应的错误处理,例如下面重新定义 404 页面:

func page_not_found(rw http.ResponseWriter, r *http.Request){
    t,_:= template.New("404.html").ParseFiles(beego.ViewsPath+"/404.html")
    data :=make(map[string]interface{})
    data["content"] = "page not found"
    t.Execute(rw, data)
}

func main() {
    beego.Errorhandler("404",page_not_found)
    beego.Router("/", &controllers.MainController{})
    beego.Run()
}

我们可以通过自定义错误页面 404.html 来处理 404 错误。

beego 更加人性化的还有一个设计就是支持用户自定义字符串错误类型处理函数,例如下面的代码,用户注册了一个数据库出错的处理页面:

func dbError(rw http.ResponseWriter, r *http.Request){
    t,_:= template.New("dberror.html").ParseFiles(beego.ViewsPath+"/dberror.html")
    data :=make(map[string]interface{})
    data["content"] = "database is now down"
    t.Execute(rw, data)
}

func main() {
    beego.Errorhandler("dbError",dbError)
    beego.Router("/", &controllers.MainController{})
    beego.Run()
}

一旦在入口注册该错误处理代码,那么你可以在任何你的逻辑中遇到数据库错误调用 this.Abort("dbError") 来进行异常页面处理。

Controller定义Error

从1.4.3版本开始,支持Controller方式定义Error错误处理函数,这样就可以充分利用系统自带的模板处理,以及context等方法。

package controllers

import (
    "github.com/astaxie/beego"
)

type ErrorController struct {
    beego.Controller
}

func (c *ErrorController) Error404() {
    c.Data["content"] = "page not found"
    c.TplNames = "404.tpl"
}

func (c *ErrorController) Error501() {
    c.Data["content"] = "server error"
    c.TplNames = "501.tpl"
}


func (c *ErrorController) ErrorDb() {
    c.Data["content"] = "database is now down"
    c.TplNames = "dberror.tpl"
}

通过上面的例子我们可以看到,所有的函数都是有一定规律的,都是Error开头,后面的名字就是我们调用Abort的名字,例如Error404函数其实调用对应的就是Abort("404")

我们就只要在beego.Run之前采用beego.ErrorController注册这个错误处理函数就可以了

package main

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

    "github.com/astaxie/beego"
)

func main() {
    beego.ErrorController(&controllers.ErrorController{})
    beego.Run()
}
使用Beego框架实现自定义错误通知 在Beego框架中,我们可以通过自定义错误通知来处理应用程序中的错误,并向用户提供更友好和可读性强的错误信息。通过上面的代码,我们将ErrorController与404和500错误进行关联,这样当应用程序遇到这些错误时,将由ErrorController来处理并显示相应的错误页面。当应用程序发生404或500错误时,将显示自定义的错误页面,并向用户提供相应的错误信息。需要注意的是,我们还需要创建一个名为error.tpl的模板文件,用于呈现错误页面的内容。这个模板文件可以根据实际需求进行自定义。 阅读详情

相关推荐

OMNeT++入门指南:从tictoc1到tictoc18的实例解析与实战演练

本文是OMNeT++网络仿真框架的入门实战指南,详细解析了从tictoc1到tictoc18的经典示例。内容涵盖OMNeT++的下载安装、核心三文件(.ned, .cc, .ini)的编写、模块化建模、自定义消息、数据统计与可视化,以及参数化批量仿真等核心技能,帮助读者从零开始掌握这一强大的网络仿真工具。

weixin_29228781的博客 329

beego 报错解决

beego 报错gob: name not registered for interface解决: 官网解释: 因此,解决该问题,只需在main函数初始化时加上报错提到的结构体即可,例如: gob.Register(models.User{}) ...

日积月累一点点 3297

告别混乱!AutoSar BswM模式管理实战:手把手教你配置Rule与ActionList(附避坑指南)

本文详细解析了AutoSar BswM模式管理的实战配置,重点介绍了Rule与ActionList的高效组合方法,帮助开发者避免常见陷阱。通过具体案例演示了从基础到复杂的配置步骤,包括模式仲裁、逻辑表达式构建及ActionList优化策略,提升汽车电子系统的协调性与可靠性。

weixin_27066963的博客 260

Beego 日志处理、错误处理

1、Beego 日志的基本使用 beego 的日志处理是基于 logs 模块搭建的,内置了一个变量 BeeLogger,默认已经是 logs.BeeLogger 类型,初始化了 console,也就是默认输出到 console。 beego.Emergency("this is emergency") beego.Alert("this is alert") beego.Critical("this is critical") beego.Error("this is error") beego.W

weixin_38107457的博客 1693

Ubuntu 22.04 LTS升级OpenSSH 9.6p1完整指南(附OpenSSL 3.2.0适配方案)

本文详细介绍了在Ubuntu 22.04 LTS系统中升级OpenSSH至9.6p1版本的全流程,包括OpenSSL 3.2.0的适配方案。从准备工作、依赖库安装、源代码编译到系统集成与配置,提供了完整的操作指南和常见问题解决方法,帮助用户安全高效地完成升级,提升服务器安全性和性能。

i8j9k0l1的博客 320

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

Time_1023的博客 1873

beego 错误处理

参考网站 https://beego.me/docs/mvc/controller/errors.md 在做 Web 开发的时候,经常需要页面跳转和错误处理,beego 这方面也进行了考虑,通过 Redirect 方法来进行跳转 func (this *InfoController) Get() { this.Redirect("Info.html", 302) // 跳转到指定页面 }...

誓言 3422

ENVI入门系列教程---一、数据预处理---1.1基本操作--5.x以后的界面(新界面)

every blog every motto: You never know how strong you really are until being strong is the only choice you have。 0. 前言 本系列教程旨在系统学习并梳理ENVI。说来惭愧,作为一名GISer,对ENVI这类软件还不能熟练掌握,这也是本系列教程的初衷。种一棵树最好的时间是十年以前,其次是...

胡侃有料的博客 1万+

beego自定义404、401、403、500、503等页面

beego 框架默认支持 404、401、403、500、503 这几种错误的处理。用户可以自定义相应的错误处理,从1.4.3版本开始,支持Controller方式定义Error错误处理函数: step1;在main方法在加入 beego.ErrorController(&controllers.ErrorController{}) step2:新建一个Error控制器 package...

u014265398的博客 1万+

手把手教你学Simulink--基于新型通信技术集成的场景实例:无人机利用激光通信实现高速率数据传输

摘要: 本文基于Simulink搭建无人机激光通信仿真系统,解决传统射频通信带宽不足问题。系统通过五层架构(发射机、信道、PAT系统、接收机、性能分析)实现Gbps级高速传输,重点建模大气衰减(雾/雨)、光束发散、PAT精跟踪(Stateflow+PID控制)等核心模块。仿真结果显示:晴天链路可达2.5Gbps(BER 1e-8),浓雾下链路中断,验证了雾是主要性能限制因素。案例涵盖调制方式选择、动态环境仿真及3D可视化,为无人机高速数据传输提供可扩展的仿真框架,并指出混合FSO/RF、AI-PAT等优化方

MHD0815的博客 181

散户渡劫指南:从炼气期到化神期的量化之路

经常有人问我普通人怎么学习量化交易,我就在想怎么学了量化就不是普通人了吗,可能他的意思是类比修仙,量化素人如何修炼进阶,今天就将量化学习每个阶段均对标修仙境界的核心能力与心法要诀一一介绍,助你从“交易凡人”蜕变为“量化金仙”。

木头大左的博客 1338

性能优化-高通cDSP(QDSP6)架构详解

高通cDSP开发的商业价值30秒快速认识高通cDSP开发的商业价值【高通cDSP旨在处理一些简单但需要大量计算的场景,如图像处理、科学计算、AI训练、计算机视觉等。这些场景使用CPU来运算会极大的降低CPU的吞吐量,因此利用现代寄存器较宽的特性设计出了适配数据并行的DSP芯片,cDSP就是典型的代表。利用cDSP+CPU既可以满足一般的使用场景,也可以完成现代图像和视频数据的处理。

发狂的小花的博客 5945

Beego 使用教程 7:Web 文件上传下载和错误处理

web 框架默认支持 401、403、404、500、503 这几种错误的处理。用户可以自定义相应的错误处理在 error.go 中修改为下面代码import ("fmt""net/http"//通过config获取自定义配置//执行定时任务//注册自动路由//返回页面//web输入参数//上传文件//下载文件//错误处理//注册函数式路由//web命名空间//过滤器//开启 Admin 管理后台//开启post 请求 bind绑定请求体//查看已注册路由。

悟世君子的博客 1761

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

beego orm 操作返回友好提示信息

beego orm 操作返回友好提示信息bee命令自动生成的添加数据函数调用添加函数后返回的`err.Error()`数据下面是创建的函数,主要是通过返回的错误代码进行判断;调用返回`err.Error()` 在使用beego orm进行insert的时候默认是返回error,但是这个error就是数据库直接返回的错误(就像我们直接在命令行操作数据库返回的信息是一样的)类似下面图2 bee命令自动生成的添加数据函数 // AddFaBroker insert a new FaBroker into da

程序员大柱 418

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

bee 字符串转int_beego——错误处理

beego通过Redirect方法来进行跳转:func (this *AddController) Get() {this.Redirect("/", 302)}如何终止此次请求并抛出异常,beego可以在控制器中这样操作:func (this *MainController) Get() {this.Abort("401")v := this.GetSession("asta")if v == ...

weixin_29672983的博客 269

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

beego的控制器Controller篇 — 错误处理

从 1.4.3 版本开始,支持 Controller 方式定义 Error 错误处理函数import (所有的函数都是Error 开头,后面的名字就是我们调用 Abort 的名字,例如 Error404 函数其实调用对应的就是 Abort("404")我们就只要在 beego.Run 之前采用 beego.ErrorController 注册这个错误处理函数就可以了import (beego的控制器Controller篇 — 错误处理 - 汇思班。

liu289747235的专栏 552

beego网站开发 定时执行任务

上网查了下相关资料,基本上都介绍的是github.com\robfig\cron这个包来执行定时任务,试了下确实可以执行。但是此包下没有删除任务的方法,只有暂停的方法(Stop),若要停止之前的任务只执行新定义的任务,除非服务器重启再定义新任务。后来又参考了一下其他人的建议,采用了github.com\jakecoffman\cron这个包。后者是在前者的基础上做了一定的修改,给每个任务添加的一个

ScumVirus 6327

Beego API开发实战:构建RESTful服务的完整流程

Beego是Go语言生态中一款高性能的开源Web框架,专为快速构建RESTful API服务设计。本文将带你通过完整流程,从环境搭建到API部署,掌握使用Beego框架开发专业API服务的核心技能,让你轻松上手Go语言后端开发。 ## 一、环境准备:快速搭建Beego开发环境 ### 1.1 安装Go语言环境 首先确保你的系统已安装Go语言环境(建议Go 1.16+版本)。可以通过官方渠道下载

gitblog_00329的博客 886

Beego中间件开发教程:从零构建自定义请求处理逻辑

Beego是一个高性能的Go语言Web框架,它提供了强大的中间件系统,让你能够轻松扩展和定制HTTP请求处理流程。本教程将带你从零开始学习Beego中间件的开发,掌握如何构建自定义的请求处理逻辑,为你的Web应用添加更多功能。 Beego中间件是一种强大的请求处理机制,它允许你在HTTP请求的生命周期中插入自定义逻辑。无论是身份验证、日志记录、性能监控还是数据转换,中间件都能帮助你实现代码复用和

gitblog_00793的博客 465

beego 学习笔记

1:mvc理解: V是前端展示数据的图形 M是数据提供者.一个工程提供的数据是相同的.数据的访问方式也是相同的.所以M是复用率很高的模块.M大量使用"缓存"这一技术.代替了很多cs编程模式中的自定义数据结构.大大的提高了开发效率(反正现在设备不值钱.而且相对与服务器性能,网络才是真正瓶颈) 再次提醒自己:计算机不差你少用的那十几个周期.不要再为了那些看不出来的性能浪费大量时间扣了.你写的已经...

m15814478834的专栏 832

beego2---入门

package main //beego既可以建立web应用也可以建立api应用 //beego是一个gohttp服务器的高层封装, import ( _ "beego1/routers" "github.com/astaxie/beego" ) //beego是通过controller和router进行路由的转发 //控制器...

weixin_34268310的博客 913

golang从0到1实战系统一百二十五:beego 的日志设计

level=LevelWarning,那么 Trace、Debug、Info 这三个函数都不会有任何的输出,以此类推。beego 的日志设计部署思路来自于 seelog,根据不同的 level 来记录日志,但是 beego 设。计的日志系统比较轻量级,采用了系统的 log.Logger 接口,默认输出到 os.Stdout,用户可。上面这一段实现了日志系统的日志分级,默认的级别是 Trace,用户通过 SetLevel 可以设。• Trace(一般的记录信息,举例如下:)

Mr_Roki的博客 476

Beego源码解析:深入理解高性能Web框架的底层实现

Beego作为Go语言中最受欢迎的高性能Web框架之一,其源码设计体现了Go语言的简洁哲学和工程实践的精髓。本文将带您深入探索Beego框架的底层实现机制,揭示其高性能背后的技术秘密,帮助您更好地理解和使用这个强大的Web框架。😊 ## Beego架构概览 Beego框架采用了经典的MVC架构模式,但在此基础上进行了Go语言特有的优化。整个框架由四个核心部分组成: 1. **基础模块**:

gitblog_00170的博客 474

Beego生态系统介绍:插件、工具与社区资源全汇总

Beego作为Go语言中最受欢迎的Web框架之一,拥有一个丰富而完善的生态系统。这个生态系统包含了各种插件、开发工具、社区资源和实用模块,让开发者能够快速构建高性能的企业级应用。无论是新手还是经验丰富的开发者,都能在Beego生态系统中找到适合自己的工具和解决方案。 ## 🚀 核心工具:Bee开发工具 Bee是Beego框架的官方命令行工具,它极大地简化了Beego应用的开发流程。通过Bee

gitblog_00850的博客 880
上一篇: go语言/golang实现base64加密解密
下一篇: Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
QQ7650371
博客等级 码龄11年 164粉丝 192原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值