当前位置: 首页 > news >正文

苏州外贸网站建设公司价格口碑营销名词解释

苏州外贸网站建设公司价格,口碑营销名词解释,苏州网络科技公司建网站,苏州市住房和城乡建设局投折网站Go语言异常处理 异常处理error接口panicrecover延时调用错误问题 异常处理 error接口 Go语言引入了一个关于错误处理的标准模式 它是Go语言内建的接口类型 它的定义如下 type error interface {Error() string }Go语言的标准库代码包errors为用户提供了以下方法 package e… Go语言异常处理 异常处理error接口panicrecover延时调用错误问题 异常处理 error接口 Go语言引入了一个关于错误处理的标准模式 它是Go语言内建的接口类型 它的定义如下 type error interface {Error() string }Go语言的标准库代码包errors为用户提供了以下方法 package errors type errorString struct { text string }func New(text string) error { return errorString{text} }func (e *errorString) Error() string { return e.text }另一个可以生成 error 类型值的方法是调用 fmt 包中的 Errorf 函数 package fmt import errors func Errorf(format string, args ...interface{}) error { return errors.New(Sprintf(format, args...)) }下面是代码示例 import ( errors fmt ) func main() { var err1 error errors.New(a normal err1) fmt.Println(err1) //a normal err1 var err2 error fmt.Errorf(%s, a normal err2) fmt.Println(err2) //a normal err2 }一般来说 错误处理位于函数的最后 下面是代码示例 import ( errors fmt )func Divide(a, b float64) (result float64, err error) { if b 0 { result 0.0 err errors.New(runtime error: divide by zero) return } result a / b err nil return } func main() { r, err : Divide(10.0, 0) if err ! nil { fmt.Println(err) //错误处理 runtime error: divide by zero } else { fmt.Println(r) // 使用返回值 } }panic 通常情况下 我们报错时可以返回一个error值 但是如果我们遇到了不可恢复的异常 比如说数组越界访问 空指针引用等 此时就会引发panic异常 一般而言 当当panic异常发生的时候 该程序会立刻停止运行 并且立即执行在该goroutine我们这里暂时理解为线程下的defer的函数 随后 程序崩溃并输出日志信息 日志信息包括panic value和函数调用的堆栈跟踪信息 此外需要注意的是 并不是所有panic异常都来自运行时 我们主动调用panic函数也会引起panic异常 panic函数可以接受任何值作为参数 func panic(v interface{})下面是代码和结果演示 package mainimport fmtfunc testA() {fmt.Println(testA ~~~) }func testB() {panic(panic error ~~~) }func testC() {fmt.Println(testC ~~~) }func main() {testA()testB()testC() } 我们发现前面的函数顺序执行完毕之后到panic异常 当然如果我们自己主动写点bug比如说数组越界 除0错误 效果也是一样的 recover 程序运行时 只要引发了panic异常就会引发程序崩溃 这是我们怎么都不愿意看到的 因此Go语言给我们提供了一种专门拦截运行时异常的内建函数 – recover 它可以使程序从panic状态恢复并获得流程控制权 注意 recover只有在defer调用的函数中有效 如果说调用了内置函数decover并且定义该defer语句的函数发生了panic异常 recover会从panic中恢复 并且返回panic和vlaue 导致panic异常的函数不会正常运行 但会正常返回 但是在未发生panic时调用recover recover会返回nil 代码演示如下 package mainimport fmtfunc testA() {fmt.Println(testA ~~~) }func testB() (err error) {defer func() {if x : recover(); x ! nil {// 此时panic和value被添加到x中err fmt.Errorf(internal error: %v, x)}}()panic(panic error ~~~)return err }func testC() {fmt.Println(testC ~~~) }func main() {testA()err : testB()fmt.Println(err)testC() }我们依旧是在test2中主动调用了panic异常 只不过我们在前面延时调用了一个匿名函数 defer func() {if x : recover(); x ! nil {// 此时panic和value被添加到x中err fmt.Errorf(internal error: %v, x)}}()在这个匿名函数中我们调用了recover函数 并且接受了err 最终我们可以发现我们的程序正常运行下去了 延时调用错误问题 如果我们在延时调用中也引发了panic异常 那么该panic异常可以被后续延时调用的recover捕获 代码和结果演示如下 func test() {defer func() {fmt.Println(recover())}()defer func() {panic(test2)}()panic(test1) }func main() {test() }此时我们的recover捕获的错误就不是test1 而是 test2
http://wiki.neutronadmin.com/news/239220/

相关文章:

  • 什么网站做博客好免费学编程国内网站
  • 在线推广企业网站的方法是万网企业邮箱登陆界面如何嵌入到自己的网站
  • 代刷网站推广全网最便宜wordpress移动端音频播放
  • 网站开发公司福建哪家做网站的公司比较好
  • 怎么做网站的浏览量沈阳网站设计广告公司
  • 营销企业网站建设步骤北京建站公司兴田德润很赞
  • 做的网站怎样评估价值广州电子商务网站建设费用
  • 专业苏州网站建设公司哪家好宝安新闻最新消息今天
  • 网站核验点查询html5网站基础
  • 建网站科技公司域名格式大全
  • 网站建设经费方案wordpress 文章延时加载
  • 网站规划书的内容有哪些免费发布租房信息网站
  • jsp网站 值班自己制作菜单的app
  • a站app有什么网站可以做设计赚钱吗
  • 科技 响应式网站模板网站询盘量
  • 做电脑网站步骤宝安区建设工程交易服务中心
  • 公司做网站所上传的产品图片用jsp做校园网站
  • 朝阳区北京网站建设wordpress极简商城主题
  • seo与网站优化 pdf上海专业网站建站品
  • 如何成立一个网站wordpress打造cms
  • 腾讯网站建设费用赣州新闻头条最新消息
  • 网站需求分析是在建站的什么阶段做的_为什么要做?网站建设关键技术
  • 网站的动效怎么做的浪味仙儿 wordpress
  • iis7.0建设网站不用ftp可以做网站吗
  • 网站制作常见问题做网站什么语言好
  • flash教程网站都有哪些工程建设是指
  • 网站运营优化建议个人网站这么做
  • 网站宣传片广州十大软件公司排名
  • 深圳网站建设软件开发公司排名辽宁省建设工程信息网招标规定
  • 电子商务网站建设策划书数据网站建设多少钱