博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GO错误的一些处理(defer,recover,panic)
阅读量:6378 次
发布时间:2019-06-23

本文共 899 字,大约阅读时间需要 2 分钟。

hot3.png

package main import(	"fmt"	"errors")func main() {	num := 10	fmt.Printf("num的类型%T, num的值%v, num的地址%v\n", num, num, &num)	num2 := new(int) //返回一个指针	//num2的类型*int, num2的值0xc04200e0b8, num2的地址0xc042004030, num2指向的值0	fmt.Printf("num2的类型%T, num2的值%v, num2的地址%v, num2指向的值%v\n", num2, num2, &num2, *num2)	//捕获异常	testCatch()	fmt.Println("我还会执行")	//自定义错误 panic	testPanic()	fmt.Println("我是panic后续代码");}func testCatch() {	//使用defaer+recover捕获异常	defer func(){		err := recover() //一个内置函数,能捕获异常		if nil != err {			fmt.Println("err=", err)		}	}()	n1 := 10	n2 := 0	n3 := n1 / n2 //发生异常	fmt.Println("catch.....", n3);}func readConf(name string) (err error) {	if "config.ini" == name {		return nil	} else {		return errors.New("发生错误")	}}func testPanic() {	err := readConf("config2.ini")	if nil != err {		panic(err) //如果有错误,这里抛出错误且终止后续程序的执行	}	fmt.Println("I am ok 继续执行")}

转载于:https://my.oschina.net/u/729139/blog/2054845

你可能感兴趣的文章
右键添加复制路径选项
查看>>
DocFetcher 本机文件搜索工具
查看>>
ambassador 学习三 限速处理
查看>>
HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
查看>>
数据结构:最小生成树--Kruskal算法
查看>>
Swift_1_基本数据类型
查看>>
VS注释与取消注释快捷键
查看>>
深入解析Vuex实战总结
查看>>
流水落花春去也
查看>>
【教训】为什么不作备份?!
查看>>
ThinkPHP3.0启动过程
查看>>
JAX-WS(JWS)发布WebService
查看>>
Centos7安装docker-compse踩过的坑
查看>>
细说Nullable<T>类型
查看>>
oracle 插入表数据的4种方式
查看>>
7.Ajax
查看>>
Linux vi/vim编辑器常用命令与用法总结
查看>>
对于 url encode decode js 和 c# 有差异
查看>>
centos rz sz安装
查看>>
mysql 修改列为not null报错Invalid use of NULL value
查看>>