培训首页  >  web前端新闻  >  兄弟连区块链培训异常处理1:恐慌与处理

兄弟连区块链培训异常处理1:恐慌与处理

[2018-09-19 17:23:18] 浏览量:55 来源:

北京兄弟连IT

  首先Go是谷歌2009发布的第二款编程语言。今天兄弟连Go语言+区块链培训老师给大家介绍一下关于Go语言中异常处理1:恐慌与处理,很多人喜欢Go语言,其实是因为Go语言有其独特的语言属性在支撑着其在编程语言界的发展,下面我们一起来看一下吧。

恐慌概述

· 代码在运行时如果出现异常,系统会报出恐慌(panic)并终止运行

· IDE和终端打印的恐慌日志,包含了恐慌的信息以及报恐慌所在的代码行

· 恐慌好比一种震撼的暴力教育,其目的在于警示开发者,什么是可以的而什么又是不可以的

· 代码在交付使用前要经过充分测试,处理一切可能的恐慌

系统报恐慌 
本例中由于我们错误地使用了一个超出数组长度的下标,导致系统报出恐慌

func demo21() {

    a := [5]int{01234}

 

    a[1] = 123

    index := 2 + 8

 

    //系统报恐慌:运行时错误(exe在执行的过程中发生的错误),下标越界

    //panic: runtime error: index out of range

    a[index] = 123

}

自己报恐慌

· 除了系统报出恐慌以外,我们还可以通过内建函数panic自己报出恐慌

· 自己报恐慌的目的,是预测程序在运行时可能出现的异常情形,并提示当前代码的调用者以错误信息

· 下面的例子中,计算圆面积这一函数在调用时如果传入了一个负数的半径,则会报出恐慌,提示半径是不可以为负数的,这样做相当于强制代码的调用者传入非负的半径

func getCircleArea(radius float32) (area float32) {

    //如果半径参数为负数,则抛出异常

    if radius < 0{

        panic("颤抖吧,您的智商已下线,半径不能为负数")

    }

    return 3.14 * radius * radius

}func demo22() {

    //程序会因为抛出的异常未经处理而崩溃

    getCircleArea(-5)

}

处理恐慌

· 程序在上线前必须测试和扫灭所有可能的恐慌

· 在没有对恐慌进行任何处理前,程序会在报恐慌的行崩溃

· Go语言提供了recover內建函数,让崩溃的程序复活并返回造成程序崩溃的error实例

· 所以我们可以在正式的业务逻辑开始前,事先挂起一个延时处理恐慌的函数,在其中借助recover函数获得造成程序崩溃的error并处理

· 当程序在123行崩溃时,123行以后的代码就不会再执行了,而是直接跳转到defer了的恐慌处理程序

func demo23() {

 

    //延时执行恐慌处理程序

    //延时到什么时候?①函数正常结束前②恐慌发生时(函数内恐慌以后的代码将不会执行)

    defer func() {

        if err := recover(); err != nil {

            fmt.Println(err)

        }

    }()

 

    //下面的函数会恐慌(报恐慌)

    getCircleArea(-5)

 

    //所以这里执行不到,而是直接跳到defer所定义的恐慌处理程序

    print("这里有美女相赠")

}

· 下面这段代码对前面的demo23进行了调用

· 由于demo23()是一个已经定义了恐慌处理方式的函数,程序不会因为demo23中的恐慌而崩溃

func demo24() {

    //本来该应该因恐慌而死,但已经在其中插入了异常(恐慌)处理程序,就不会造成程序崩溃

    //丢失的部分仅仅为demo23中恐慌以后的部分

    demo23()

 

    fmt.Println("抢钱抢粮抢地盘")

    fmt.Println("GAME OVER")

}

更多区块链视频教程/源码/课件/学习资料-企鹅QUN:

文中图片素材来源网络,如有侵权请联系删除
  • 软件开发
  • 软件测试
  • 数据库
  • Web前端
  • 大数据
  • 人工智能
  • 零基础
  • 有HTML基础
  • 有PHP基础
  • 有C语言基础
  • 有JAVA基础
  • 其他计算机语言基础
  • 周末班
  • 全日制白班
  • 随到随学

网上报名

热门信息