go 异常处理

package main

import "fmt"

//异常处理
//defer  panic  recover
//defer 表示延迟调用,即便程序出现严重错误,也会执行
//panic  就是python中的raise(主动抛出异常)
//recover 恢复程序,继续执行
func main() {
    //先注册,后调用
    //defer fmt.Println("xxxx")
    //defer fmt.Println("yyy")
    f1()
    f2()

    f3()

}

func f1()  {
    fmt.Println("f1...")
}

func f2()  {
    defer func() {
        if a:=recover();a!=nil{
            //a 如果不等于nil,表示程序出了异常,a 就是异常信息
            //a 等于nil,表示没有异常
            //fmt.Println("出错了")
            fmt.Println(a)
        }
        //用于会被执行(相当于finally)

    }()
    fmt.Println("f2...")
    //var a =make([]int,3,3)
    //fmt.Println(a[4])
    panic("你给我出去")
}
func f3()  {

    fmt.Println("f3...")
}

 

 

 

 

 

package main

import (
    "errors"
    "fmt"
)

//错误

func circleArea(radius int) (int, error) {
    if radius < 0 {
        return 0, errors.New("错误信息")
        //panic("xddd")
    }
    return 100, nil
}

func main() {
    a,_:=circleArea(-10)
    if err!=nil{
        fmt.Println(err)
    }
    //fmt.Println(err)
    fmt.Println(a)
    _,err:=fmt.Println()
    if err!=nil{
        fmt.Println("打印出错")
    }
}

 

posted @ 2019-12-12 21:30  杨鑫Zz  阅读(130)  评论(0编辑  收藏  举报