go错误处理

news/2024/11/29 6:51:10/
func test() {num1 := 10num2 := 0result := num1 / num2fmt.Println("result", result)}
func main() {test()for {fmt.Println("运行完毕!   main 下面的代码")time.Sleep(time.Second)}}

在这里插入图片描述

  1. 在默认情况下,当发生错误后(panic) ,程序就会退出(崩溃.)
  2. 如果我们希望:当发生错误后,可以捕获到错误,并进行处理,保证程序可以继续执行。还可
    以在捕获到错误后,给管理员一个提示(邮件,短信。。。)
  3. 这里引出我们要将的错误处理机制

基本说明

  1. Go 语言追求简洁优雅,所以,Go 语言不支持传统的 try…catch…finally 这种处理。
  2. Go 中引入的处理方式为:defer, panic, recover
  3. 这几个异常的使用场景可以这么简单描述:Go 中可以抛出一个 panic 的异常,然后在 defer 中
    通过 recover 捕获这个异常,然后正常处理
    使用 defer+recover 来处理错误
func test() {defer func() {err := recover()if err != nil {fmt.Println("错误信息:", err)}}()num1 := 10num2 := 0result := num1 / num2fmt.Println("result", result)}
func main() {test()for {fmt.Println("运行完毕!   main 下面的代码")time.Sleep(time.Second)}}

在这里插入图片描述
进行错误处理后,程序不会轻易挂掉,如果加入预警代码,就可以让程序更加的健壮。看一个
案例演示:

在这里插入图片描述

自定义错误
自定义错误的介绍
Go 程序中,也支持自定义错误, 使用 errors.New 和 panic 内置函数。

  1. errors.New(“错误说明”) , 会返回一个 error 类型的值,表示一个错误
  2. panic 内置函数 ,接收一个 interface{}类型的值(也就是任何值了)作为参数。可以接收 error 类
    型的变量, 输出错误信息, 并退出程序.
    案例说明
package mainimport ("errors""fmt""time"
)func main() {Test2()for {fmt.Println("运行完毕!   main 下面的代码")time.Sleep(time.Second)}}// 读取文件,传入的参数名称错误返回一个自定义的错误
func ReadConfig(f string) (err error) {if f == "Config.init" {fmt.Println("读取文件成功!")return nil} else {return errors.New("文件名不是Config.init")}
}func Test2() {err := ReadConfig("Config.init00")if err != nil {panic("取出文件错误。。。")fmt.Println("终止运行了!")} else {fmt.Println("Test2  继续执行")}
}

在这里插入图片描述

正确文件
在这里插入图片描述


http://www.ppmy.cn/news/47807.html

相关文章

Cookie 和 Session

文章目录 一、会话跟踪技术二、CookieCookie基本使用Cookie原理Cookie使用细节 三、SessionSession基本使用Session原理Session使用细节总结 四、实现用户登录 一、会话跟踪技术 会话:用户打开浏览器,访问web服务器的资源,会话建立&#xff…

自定义模型训练

文章目录 自定义模型&训练1. Define the Model2. Define Optimizer and Loss3. Evaluate Untrained Model4. Define Metrics5. Apply Gradients6. Train Loop7. Validation Loop8. Main loop 自定义模型&训练 在一些场景下,使用tensorflow默认的训练过程无法…

RPC通信

一、RPC通信 1、什么是RPC? RPC(Remote Procedure Call)远程过程调用,允许像调用本地服务一样调用远程服务。在整个过程中,RPC 会隐藏具体的通信细节。RPC是一种通信方式,可以通过HTTP来实现,也…

图像分类算法:ResNet论文解读

图像分类算法:ResNet论文解读 前言 ​ 其实网上已经有很多很好的解读各种论文的文章了,但是我决定自己也写一写,当然,我的主要目的就是帮助自己梳理、深入理解论文,因为写文章,你必须把你所写的东西表达清楚…

【Linux】-关于Linux的指令(上)

作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! TOC 前言 今天我们来讲关于Linux的基本指令,博主讲的指令会对应着Windows…

CLIP 论文解读

文章目录 模型训练推理 实验与Visual N-Grams 相比较分布Shift的鲁棒性 不足参考 现有的计算机视觉系统用来预测一组固定的预订对象类别,比如ImageNet数据集有1000类,CoCo数据集有80类。这种受限的监督形式限制了模型的通用性和可用性。使用这种方法训练…

ClickHouse同步MySQL数据

目录 1 概述1.1 特点1.2 使用细则 2 案例实操2.1 MySQL 开启 binlog 和 GTID 模式2.2 准备 MySQL 表和数据2.3 开启 ClickHouse 物化引擎2.4 创建复制管道2.5 修改数据2.6 删除数据2.7 删除表 1 概述 MySQL 的用户群体很大,为了能够增强数据的实时性,很多…

Nmap入门到高级【第二章】

预计更新Nmap基础知识 1.1 Nmap简介和历史 1.2 Nmap安装和使用方法 1.3 Nmap扫描技术和扫描选项 Nmap扫描技术 2.1 端口扫描技术 2.2 操作系统检测技术 2.3 服务和应用程序检测技术 2.4 漏洞检测技术 Nmap扫描选项 3.1 扫描类型选项 3.2 过滤器选项 3.3 探测选项 3.4 输出选项…