zoukankan      html  css  js  c++  java
  • 异常处理和错误处理

    异常处理

      当程序发生异常无法继续运行时,通常使用 panic 来终止程序。当函数发生panic时,程序会控制线程返回到该函数的调用方,直到当前的所有函数都返回退出,然和程序就会打印出panic信息,最后程序终止。

    1.什么时候可以使用panic?

      在程序中,应该尽可能的使用错误,而不是使用panic和recover。只有当程序无法继续运行的时候,才应该使用panic和recover机制。

      panic有以下两种情况时可以使用:

        1)发生了一个不可恢复的错误,此时程序不能继续运行。

        2)发生了一个编程上的问题。

    2.异常处理方法

      defer 表示延迟调用,即便程序出现严重错误,也会执行。

      panic 就是python中的raise(主动抛出异常)。

      recover 表示恢复程序,继续执行。

    package main
    
    import "fmt"
    
    func main() {
        f1()    # 先注册,后调用。
        f2()
        f3()
    }
    
    func f1()  {
        fmt.Println("f1...")
    }
    
    func f2()  {
        defer func() {
            if a:=recover();a!=nil{    # /a 如果不等于nil,表示程序出了异常,a 就是异常信息。a 如果等于nil,表示没有异常
                fmt.Println(a)
            }    #用于会被执行(相当于finally)
        }()
        fmt.Println("f2...")
        var a =make([]int,3,3)
        fmt.Println(a[4])
    }
    
    func f3()  {
        fmt.Println("f3...")
    }

    错误处理

      错误表示程序中出现了异常。在go语言中,错误用 error 类型来表示。

    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("打印出错")
        }
    }
  • 相关阅读:
    [Tutorial] How to check and kill running processes in Ubuntu
    [Tutorial] Getting started with Gazebo in ROS
    Linux基础命令
    Linux安装系统
    vue 前后端数据交互问题解决
    如何在cmd中启动MongoDB服务器和客户端
    selenuim模块的使用 解析库
    beautifhulsoup4的使用
    浅谈scrapy框架安装使用
    自动登录 点赞 评论 抽屉网
  • 原文地址:https://www.cnblogs.com/blue-tea/p/12038240.html
Copyright © 2011-2022 走看看