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入门学习(五):异常处理的更多相关文章

  1. SCARA——OpenGL入门学习五六(三维变换、动画)

    OpenGL入门学习(五) 此课为三维变换的内容,比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果, 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能 ...

  2. C语言程序设计入门学习五步曲(转发)

    笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手.发生这种现象的原因有三个: 一.所谓的看懂听明白,只是很肤浅的 ...

  3. 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 ...

  4. Golang入门学习(二):控制分支

    文章目录 @[TOC] 1. 控制分支 1.1 if-else分支 1.2 switch分支 1.4 while 和do...while循环结构 1.5 多种循环结构 1.6 break 1.7 co ...

  5. Objective C 快速入门学习五

    <一>继承和多态 @class Complex 声明类(同C++) 子类函数成员 super 访问父类 同C++类似 .通过继承 在子类中添加新方法 .通过继承 在子类中添加新成员 .通过 ...

  6. 微服务(入门学习五):identityServer4+ocelot+consul实现简单客户端模式

    简介 主要是采用identity Server4 和ocelot 加上consul 实现简单的客户端模式 开发准备  环境准备 下载并安装Consul具体请参考前几篇的内容 项目介绍 创建ocelot ...

  7. Golang入门学习(四):常用的函数汇总

    文章目录 2.4 常用的内置函数 2.4.1 字符串常用内置函数 2.4.2 常用的时间和日期相关函数 2.4.3 内置函数 2.4 常用的内置函数 2.4.1 字符串常用内置函数 https://g ...

  8. JavaScript入门学习笔记(异常处理)

    try:语句测试代码块的错误,当try中的代码块出错时执行catch中的代码块. catch:语句处理错误: throw:语句创建或抛出自定义异常. 三者一起使用可以控制程序流并生成自定义异常信息. ...

  9. dubbo入门学习 五 provider端的编写

    1. 新建Maven Project, 里面只有接口(dubbo-service) 1.1 为什么这么做? RPC框架,不希望Consumer知道具体实现.如果实现类和接口在同一个项目中,Consum ...

随机推荐

  1. 论文笔记:(NIPS2017)PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

    目录 一. 存在的问题 1.提取局部特征的能力 2.点云密度不均问题 二.解决方案 1.改进特征提取方法: (1)采样层(sampling) (2)分组层(grouping) (3)特征提取层(fea ...

  2. 键盘和鼠标闲置超时时关闭显示器并锁定电脑桌面的AutoHotkey脚本 2019年11月24日写

    /* 键盘和鼠标闲置超时时关闭显示器并锁定电脑桌面的AutoHotkey脚本 2019年11月24日写 在电脑桌面锁定时移动鼠标就会显示登录界面,此时即使超过电源设置的时间电脑也不会关闭显示器使得屏幕 ...

  3. MySQL Shell import_table数据导入

    目录 1. import_table介绍 2. Load Data 与 import table功能示例 2.1 用Load Data方式导入数据 2.2 用import_table方式导入数据 3. ...

  4. Spring Cloud分区发布实践(3) 网关和负载均衡

    注意: 因为涉及到配置测试切换, 中间环节需按此文章操作体验, 代码仓库里面的只有最后一步的代码 准备好了微服务, 那我们就来看看网关+负载均衡如何一起工作 新建一个模块hello-gateway, ...

  5. 2020年度钻石C++C学习笔记(3)--《博学谷》

    1.Unix/Linux操作系统介绍 1.1 操作系统的作用 1.1.1 操作系统的目标 l 方便:使计算机系统易于使用 l 有效:以更有效的方式使用计算机系统资源 l 扩展:方便用户有效开发.测试和 ...

  6. Solon 1.5.24 发布

    本次版本主要变化: 修复 solon.extend.sessionstate.jwt 在特定场景下会无限次解析的问题 优化 solon.extend.cors 对头信息的处理 插件 solon.boo ...

  7. SpringCloud升级之路2020.0.x版-16.Eureka架构和核心概念

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford Eureka 目前 ...

  8. 关于下载远程文件为未知文件.txt的解决方法

    本地下载文件后缀正常,服务器下载文件后缀都为.txt的解决方法: 后缀为 未知文件.txt 的原因为前端无权限获取Content-Disposition中的文件名 response.setHeader ...

  9. STP规则

    1)每个网络的有且只有一个桥根 2)每个非桥根有且只有一个根端口: 3)每条链路有且只有一个指定端口: 4)根桥的所有端口均为指定端口: 5)根端口和指定端口都是forwading: 6)阻塞端口为B ...

  10. minio-对象存储

    1. 简介 官方地址 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件. ...