Golang入门学习(五):异常处理
2.5 错误处理机制
2.5.1 基本说明
- Go语言追求简洁优雅,因此并不支持传统的try…catch…finally这种处理方式
- Go中引入的处理方式包括: defer, panic, recover
- 使用场景如下: 在Go程序中跑出一个异常panic, 然后在defer中通过recover捕获到这个异常然后处理之
- 加入异常处理机制,即使程序发生错误,主程序依然可以继续运行
2.5.2 入门示例
func test() {
num1 := 10
num2 := 0
ret := num1 / num2 //panic: runtime error: integer divide by zero
fmt.Println(ret)
}
func testPanic() {
//使用defer+recover机制来处理异常
defer func() {
err := recover() //recover函数用于捕获异常
if err != nil { //说明真的有异常发生
fmt.Println("err=", err)
}
}() //匿名函数
num1 := 10
num2 := 0
ret := num1 / num2 //panic: runtime error: integer divide by zero
fmt.Println(ret)
}
func main() {
testPanic()
fmt.Println("testPanic()执行完毕~~~")
}
2.5.3 自定义错误
- Go程序中支持自定义错误,使用errors.New和panic内置函数
- errors.New(“xxx”) 用来生成一个自定义错误,返回值是一个错误码
- panic内置函数用来接收一个interface{}类型的值作为参数,因此可以接受自定义的错误类型。提示错误信息并退出程序
//自定义错误类型
func readConf(name string) (err error) {
if name != "ipsec.conf" {
return errors.New("输入的文件名称有误!")
}
return nil
}
func test2() {
if err := readConf("ipsecX.conf"); err != nil {
panic(err)
}
fmt.Println("后续代码继续执行~~~")
}
func main() {
test2()
}
Golang入门学习(五):异常处理的更多相关文章
- SCARA——OpenGL入门学习五六(三维变换、动画)
OpenGL入门学习(五) 此课为三维变换的内容,比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果, 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能 ...
- C语言程序设计入门学习五步曲(转发)
笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手.发生这种现象的原因有三个: 一.所谓的看懂听明白,只是很肤浅的 ...
- Golang入门学习(三):函数
文章目录 2.3 函数 2.3.1 基本语法 2.3.2 入门demo: 2.3.3 函数递归: 2.3.4 函数注意事项 2.3.5 init函数 2.3.6 匿名函数 2.3.7 闭包 2.3.8 ...
- Golang入门学习(二):控制分支
文章目录 @[TOC] 1. 控制分支 1.1 if-else分支 1.2 switch分支 1.4 while 和do...while循环结构 1.5 多种循环结构 1.6 break 1.7 co ...
- Objective C 快速入门学习五
<一>继承和多态 @class Complex 声明类(同C++) 子类函数成员 super 访问父类 同C++类似 .通过继承 在子类中添加新方法 .通过继承 在子类中添加新成员 .通过 ...
- 微服务(入门学习五):identityServer4+ocelot+consul实现简单客户端模式
简介 主要是采用identity Server4 和ocelot 加上consul 实现简单的客户端模式 开发准备 环境准备 下载并安装Consul具体请参考前几篇的内容 项目介绍 创建ocelot ...
- Golang入门学习(四):常用的函数汇总
文章目录 2.4 常用的内置函数 2.4.1 字符串常用内置函数 2.4.2 常用的时间和日期相关函数 2.4.3 内置函数 2.4 常用的内置函数 2.4.1 字符串常用内置函数 https://g ...
- JavaScript入门学习笔记(异常处理)
try:语句测试代码块的错误,当try中的代码块出错时执行catch中的代码块. catch:语句处理错误: throw:语句创建或抛出自定义异常. 三者一起使用可以控制程序流并生成自定义异常信息. ...
- dubbo入门学习 五 provider端的编写
1. 新建Maven Project, 里面只有接口(dubbo-service) 1.1 为什么这么做? RPC框架,不希望Consumer知道具体实现.如果实现类和接口在同一个项目中,Consum ...
随机推荐
- 自学linux——7.Linux的自有服务(进阶篇)
linux自有服务 1.设置主机名 (1)临时设置主机名,需要切换用户(su)使之生效 #hostname主机名 (2)永久设置主机名,需要重启 先找到一个文件[主机名的配置文件]/etc/sysco ...
- Java基础——运算符(同c语言)
- 常用的Windows快捷键
常用的Windows快捷键 关闭触摸板(华硕电脑):Fn+F9 切换窗口:Alt + Tab任务视图:Win + Tab松开键盘界面不会消失 创建新的虚拟桌面:Win + Ctrl + D(新开一个干 ...
- [08 Go语言基础-for循环]
[08 Go语言基础-for循环] 循环 循环语句是用来重复执行某一段代码. for 是 Go 语言唯一的循环语句.Go 语言中并没有其他语言比如 C 语言中的 while 和 do while 循环 ...
- ApiPost进阶教程(1) — 在ApiPost中使用脚本
什么是APIPOST脚本 APIPOST脚本是基于JavaScript语言的代码片段,可实现在接口请求或集合测试时添加动态行为. 脚本可实现的功能 测试(断言)请求返回结果的正确性(后置脚本). 动态 ...
- 用Vsftpd服务传输文件
文件传输协议 文件传输协议(FTP,File Transfer Protocol),即能够让用户在互联网中上传.下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要F ...
- 关于下载远程文件为未知文件.txt的解决方法
本地下载文件后缀正常,服务器下载文件后缀都为.txt的解决方法: 后缀为 未知文件.txt 的原因为前端无权限获取Content-Disposition中的文件名 response.setHeader ...
- Windows内核开发-6-内核机制 Kernel Mechanisms
Windows内核开发-6-内核机制 Kernel Mechanisms 一部分Windows的内核机制对于驱动开发很有帮助,还有一部分对于内核理解和调试也很有帮助. Interrupt Reques ...
- Java实现WebSocket服务
一.使用Tomcat提供的WebSocket库 Java可以使用Tomcat提供的WebSocket库接口实现WebSocket服务,代码编写也非常的简单.现在的H5联网游戏基本上都是使用WebSo ...
- SQL server多表联合查询
参考网址: https://blog.csdn.net/zou15093087438/article/details/79226394 1. 外连接可分为:左连接.右连接.完全外连接. a. 左连接 ...