• golang学习笔记——异常


    自定义异常的两种方式
    package main
     
    import (
        "errors"
        "fmt"
    )
     
    func main() {
        //使用fmt.Errorf
        err1 := fmt.Errorf("%s", "this is normal error")
        fmt.Println(err1)
        //使用errors
        err2 := errors.New("this is a not param error")
        fmt.Println(err2)
    }
    • 应用
    package main
     
    import (
        "errors"
        "fmt"
    )
     
    func MyDiv(a, b int) (result int, err error) {
        err = nil
        if b == 0 {
             err = errors.New("分母不能为0")
        } else {
             result = a / b
        }
        return
    }
     
    func main() {
        result, err := MyDiv(6, 0)
        if err == nil {
            fmt.Println("result = ", result)
        } else {
            fmt.Println(err)
        }
    }
     
    panic函数的使用
    • 会终止程序的运行
    package main
     
    import (
        "fmt"
    )
     
    func test1() {
        fmt.Println("11111111111")
    }
     
    func test2() {
        fmt.Println("222222222222")
        panic("this is a panic error")
    }
     
    func test3() {
        fmt.Println("333333333333")
    }
     
    func main() {
        test1()
        test2()
        test3()
    }
     
     
    recover函数的使用(防止引起panic错误时导致程序终止)
    • 只能放到defer函数中使用
    package main
     
    import (
        "fmt"
    )
     
    func test1() {
        fmt.Println("11111111111")
    }
     
    func test2(x int) {
        defer func() {
             if err := recover(); err != nil {
                 fmt.Println(err)
             }
        }()
        var a [10]int
        a[x] = 20
    }
     
    func test3() {
        fmt.Println("333333333333")
    }
     
    func main() {
        test1()
        test2(20)
        test3()
    }
     
  • 相关阅读:
    PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择的问题
    团队展示
    测试与优化:设计模式的应用和初次尝试多线程
    结对编程,三年级混合运算
    一个大气又可爱的标题
    随笔
    C#操作word类文件
    TypeError: Object of type 'int32' is not JSON serializable ——已解决
    Error: UserWarning: Ignoring URL... 已解决
    tensorflow(二)----线程队列与io操作
  • 原文地址:https://www.cnblogs.com/itsuibi/p/14459513.html
Copyright © 2020-2023  润新知