Go错误
1. error
package main import (
"errors"
"fmt"
) func main() {
/*
error:内置的数据类型,内置的接口
定义方法:Error() string 使用go语言提供好的包:
errors包下的函数:New(),创建一个error对象
fmt包下的Errorf()函数:
func Errorf(format string, a ...interface{}) error
*/
//1.创建一个error数据
err1 := errors.New("自己创建玩的。。")
fmt.Println(err1) //自己创建玩的。。
fmt.Printf("%T\n", err1) //*errors.errorString //2.另一个创建error的方法
err2 := fmt.Errorf("错误的信息码:%d", 100)
fmt.Println(err2) //错误的信息码:100
fmt.Printf("%T\n", err2) //*errors.errorString err3 := checkAge(-30) //您给定的年龄是:-30,不合法
if err3 != nil {
fmt.Println(err3)
return
}
fmt.Println("程序。。。go on。。。")
} //设计一个函数:验证年龄是否合法,如果为负数,就返回一个error
func checkAge(age int) error {
if age < 0 {
//返回error对象
//return errors.New("年龄不合法")
err := fmt.Errorf("您给定的年龄是:%d,不合法", age)
return err
}
fmt.Println("年龄是:", age)
return nil
}
2. panic/recover
package main
import "fmt"
func main() {
/*
panic:词义"恐慌",
recover:"恢复"
go语言利用panic(),recover(),实现程序中的极特殊的异常的处理
panic(),让当前的程序进入恐慌,中断程序的执行
recover(),让程序恢复,必须在defer函数中执行
*/
//恢复函数
//需要在panic之前执行到recover
defer func() {
if msg := recover(); msg != nil {
fmt.Println(msg, "程序回复啦。。。")
}
}()
funA()
//先被defer的后执行,后被defer的先执行
defer myprint("defer main:3.....")
funB() //panic传递到这,下面的下面不执行
defer myprint("defer main:4.....") //不会执行到这话
fmt.Println("main..over。。。。") //不会执行到这话
}
func myprint(s string) {
fmt.Println(s)
}
func funA() {
fmt.Println("我是一个函数funA()....")
}
func funB() { //外围函数
fmt.Println("我是函数funB()...")
defer myprint("defer funB():1.....")
for i := 1; i <= 10; i++ {
fmt.Println("i:", i)
if i == 5 {
//让程序中断
panic("funB函数,恐慌了") //下面的代码不执行
}
} //当外围函数的代码中发生了运行恐慌,只有其中所有的已经defer的函数全部都执行完毕后,该运行恐慌才会真正被扩展至调用处。
defer myprint("defer funB():2.....")
}
Go错误的更多相关文章
- 航空概论(历年资料,引之百度文库,PS:未调格式,有点乱)
航空航天尔雅 选择题1. 已经实现了<天方夜谭>中的飞毯设想.—— A——美国2. 地球到月球大约—— C 38 万公里3. 建立了航空史上第一条定期空中路线—— B——德国4. 对于孔明 ...
- 日期格式代码出现两次的错误 ORA-01810
错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd ...
- ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”
DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...
- ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”
在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...
- 实时的.NET程序错误监控产品Exceptionless
Exceptionless可以对ASP.NET, Web API, WebForms, WPF, Console, 和 MVC 应用提供错误监控.上传.报表服务.使用时需要在Exceptionless ...
- 一个粗心的Bug,JSON格式不规范导致AJAX错误
一.事件回放 今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...
- SQL Server 致程序员(容易忽略的错误)
标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题 概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见 ...
- C# - 值类型、引用类型&走出误区,容易错误的说法
1. 值类型与引用类型小总结 1)对于引用类型的表达式(如一个变量),它的值是一个引用,而非对象. 2)引用就像URL,是允许你访问真实信息的一小片数据. 3)对于值类型的表达式,它的值是实际的数据. ...
- 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file
我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...
- 【WCF】错误协定声明
在上一篇烂文中,老周给大伙伴们介绍了 IErrorHandler 接口的使用,今天,老周补充一个错误处理的知识点——错误协定. 错误协定与IErrorHandler接口不同,大伙伴们应该记得,上回我们 ...
随机推荐
- php实现自定义中间logo的微信小程序码
小程序码生成的时候是默认使用小程序后台设置的小程序icon图片的,但是在有些场景我们可能要替换成我们自己想要的icon. 下面先放代码: public function makeNewQrCodeAc ...
- 为什么 RMAN 控制文件自动备份的名称格式没有遵循 %F 规则
在 Oracle 中越是简单的问题,往往越难找到答案,举个例子: 你是否留意观察过在 RMAN 进行备份的时候,自动生成的控制文件名称是否是按照 %F 规则来生成的? 关于控制文件自动备份路径格式,在 ...
- LINUX使用SSH远程终端时,如何将运行时间长的程序在后台挂起,下次SSH登陆时继续使用同一个SHELL?
我在某个平台上购买了一个云服务器,LINUX操作系统无图形化界面,硬盘空间较小.虽然在平台上可以通过其自带网页版VNC界面登陆SHELL进而操控云主机,但是每次需要操控都得打开网页登陆进平台,然后再进 ...
- web前端技术阅读
2015年 <响应式web设计>--响应式布局,渐进增强,优雅降级 <javascript高级程序设计>--js基础 2016年 <javascript语言精粹>- ...
- c#中转义字符\n和\r的区别
在c#中\n代表换行,\r代表回车,但\r是把后面的字符覆盖前面的,例: "1234\n567" 输出的是 1234 567 "1234\r567"输出的是 5 ...
- Centos7部署jenkins
1. 下载rpm包: a) 下载地址:https://pkg.jenkins.io/redhat-stable/ b) 点选一个下载即可,例如点选:“jen ...
- [HNOI2014] 道路堵塞 - 最短路,线段树
对不起对不起,辣鸡蒟蒻又来用核弹打蚊子了 完全ignore了题目给出的最短路,手工搞出一个最短路,发现对答案没什么影响 所以干脆转化为经典问题:每次询问删掉一条边后的最短路 如果删掉的是非最短路边,那 ...
- 在已部署好的docker环境下配置nginx项目路径
第一步:申请一个docker连接账号,可以借用putty工具,如果使用sublime,可以下载sftp插件,上传.下载来同步你线上线下的文件: 第二步:修改nginx区域配置文件,在conf文件夹里放 ...
- Working copy not locked; this is probably a bug, please report
问题描述 svn: Unable to lock 'G:\chengXu\2017_Year\JFW\Easy7\src' 解决方案
- 【转载】Java嵌入Pig编程
转自:https://wiki.apache.org/pig/EmbeddedPig Embedding Pig In Java Programs Sometimes you want more co ...