美文网首页
go语言错误处理

go语言错误处理

作者: 苏州运维开发 | 来源:发表于2018-04-12 14:48 被阅读0次

1.panic与recover用法

package main
import (
    "fmt"
)
func main() {
    defer_call()
}

func defer_call() {
    defer func() { fmt.Println("打印前") }()
    defer func() { fmt.Println("打印中") }()
    defer func() { fmt.Println("打印后") }()
    defer func(){
        if r := recover();r != nil{
            fmt.Println(r)
        }

    }()
    fmt.Println("debug step 1")
    panic("触发异常")
        //log.Panic("error happend")      会被recover处理,
    //log.Fatalln("error happend")     会强行os.exit(1)
    fmt.Println("continue??")
}

答:
defer 是后进先出执行顺序,类似“栈”数据结构处理逻辑;代码执行到panic时,正常的函数执行会终止,“continue”即不会被打印,开始从下到上执行defer代码块,最后执行panic.
执行结果如下:

debug step 1
触发异常
打印后
打印中
打印前

关于defer执行顺序,按照本人的理解如下:

package main

import "fmt"

type message struct {
content string
}

func (p *message) set(c string) {
    p.content = c
}

func (p *message) print() string {
    fmt.Println("inner defer func")
    p.content += p.content
    return p.content
}

func main() {
m := &message{content: "Hello"}
defer fmt.Print(m.print())
fmt.Println(m.content)
m.set("World")
fmt.Println("我是有底线的")
fmt.Println(m.content)

}

运行结果为

inner defer func
HelloHello
我是有底线的
World
HelloHello

相关文章

  • Go 语言基础——错误处理

    学习目标 掌握错误处理 掌握自定义错误处理 掌握defer关键字的使用 错误处理 GO没有异常处理机制 Go语言引...

  • 2021-06-08

    Go的编程模式,错误处理 引入了其他语言的错误处理模式,最后,说明Go错误处理的好处。主要是将函数的入参、出参、错...

  • golang

    golang go和php的区别类型:go为编译性语言;php解释性语言错误:go的错误处理机制;php本身或者框...

  • Learn Golang in Days - Day 15-Go

    Learn Golang in Days - Day 15-Go错误处理 简介 Go语言通过内置错误接口提供了简单...

  • go 语言错误处理

    go 语言错误处理 panic recover defer 最大公约数 最小公倍数 go语言中的没有try cat...

  • go语言20小时从入门到精通(九、异常处理)

    9.1 error接口 Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型,该...

  • Go语言之错误处理

    一. 异常处理 1. error接口 Go语言中引入了一个关于错误处理的标准模式error接口,是go语言的内置接...

  • Go语言基础05——异常、正则、字符串、json、文本文件处理

    异常 Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型 字符串处理 字符串在...

  • Go学习笔记-错误与异常

    Go 语言的异常处理语法绝对是独树一帜,在我见过的诸多高级语言中,Go 语言的错误处理形式就是一朵奇葩。 一方面它...

  • 《Go语言入门经典》10~12章读书笔记

    第10章处理错误 10.1 错误处理及Go语言的独特之处 在Go语言中,一种约定是在调用可能出现问题的方法或函数时...

网友评论

      本文标题:go语言错误处理

      本文链接:https://www.haomeiwen.com/subject/bfoxkftx.html