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 ...
随机推荐
- S01-晓亮的电脑软件安装过程文档 腾讯QQ 595076941 2019年10月
S01-晓亮的电脑软件安装过程文档 腾讯QQ 595076941 2019年10月 本文档的创建作者的腾讯QQ聊天号码是 595076941 S02-电脑软件安装过程中不要随意关闭窗口除非必需关闭窗口 ...
- java.lang.RuntimeException: Cannot create a secure XMLInputFactory 解决
客户端调用服务端cxf,服务端报 java.lang.RuntimeException: Cannot create a secure XMLInputFactory 我的cxf 版本 为 3.0. ...
- Java面向对象13——抽象类
抽象类 package oop.demon01.demon08; //abstract 抽象类: 类 extends: 类---单继承 (接口可以多继承) public abstract c ...
- 7年老Android收到阿里offer,跟领导提离职被怼:为年薪百万不做兄弟?
在当今社会,钱就是衡量一个人价值的标准,如果你在一家公司,领导再怎么重用你,但是薪资待遇却很低,这样根本是很难留住人,毕竟工作就是为了赚钱,要是连工资都满足不了,谈其他根本就是扯淡. 最近在职业论坛看 ...
- 使用 Service Worker 缓解网站 DDOS 攻击
前言 传统的 DDOS 防御开销很大,而且有时效果并不好. 例如使用 DNS 切换故障 IP 的方案,由于域名会受到缓存等因素的影响通常有分钟级延时,前端难以快速生效.例如使用 CDN 服务,虽可抵挡 ...
- 修改Linux系统的默认语言编码集
RedHat 今天晚上发现服务器上vi的界面提示变成了乱码,只能将XShell的编码改为GBK才能正常显示,导致consolas字体无法使用,GBK编码下的字体丑陋无比,无法忍受,一轮google之后 ...
- Check Directory Existence in Shell
The following command in one line can check if a directory exists. You can check the return value (& ...
- FTP三种访问模式
FTP匿名访问模式是比较不安全的服务模式,尤其在真实的工作环境中千万不要存放敏感的数据,以免泄露. vsftpd程序默认已经允许匿名访问模式,我们要做的就是开启匿名用户的上传和写入权限,写入下面的参数 ...
- noip36
开场先看一遍题面,凭着错误的感觉t3叫naive是一个原因,312开局.然后就死的很惨. T1 朴素暴力40pts,细想就有80pts,然而我只写了十分钟左右就爬回T3了,所以... 其实都是借口 正 ...
- python创建一个简单的服务
python -m http.server 8000 --bind 0.0.0.0 8000为端口 0.0.0.0允许远程访问