zoukankan      html  css  js  c++  java
  • go语言学习(四)——异常

    go语言中的异常处理的关键字为defer,panic和recover,类比于其他语言的try,catch和finally,但go语言中的使用方法有些不同

    下面是我的练习代码:

    // GoStudy0215 project main.go
    /*
    go语言学习——异常
    */
    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	defer func() { //defer执行后,结束该函数的时候会调用
    		if r := recover(); r != nil { //捕获错误信息,以进行相应的错误处理
    			fmt.Println(r) //错误处理
    		}
    	}() //这里加括号表示调用这个函数
    
    	defer func() { //defer是一个栈,后定义的defer会先执行
    		fmt.Println("func end !!!")
    	}()
    
    	testFunc1() //这里调用panic之后,后面的不会执行,开始执行终止程序
    	testFunc2()
    
    	defer func() { //这个defer没有执行到,所以main函数结束的时候,并不会调用这个defer
    		fmt.Println("no print")
    	}()
    }
    
    func testFunc1() {
    	fmt.Println("test func start")
    
    	//由于某种原因,出现了错误
    	//比如,游戏中的人物因为这个函数移动到了场景外
    	//执行下面的语句,终止这个函数,层层往上终止,直至终止这个线程
    	panic("404")
    
    	fmt.Println("test func end")
    }
    
    func testFunc2() {
    	panic(555)
    }
    

    通过我上面的代码能够看出来,相比于try,catch,finally好的地方在于,我们可以把应该正常执行的代码,和错误处理的代码完全分离,而不用向原来那样将正常的代码,错误处理的代码写在一起,使代码层次混乱

    以上,异常结束

  • 相关阅读:
    Codeforces #548 (Div2)
    Codeforces #550 (Div3)
    UVA
    ios 动画
    CAAnimation
    iOS三种定时器的用法NSTimer、CADisplayLink、GCD
    iOS使用宏写单例
    iOS完美的网络状态判断工具
    iOS开发
    iOS自定义控件教程:制作一个可重用的旋钮
  • 原文地址:https://www.cnblogs.com/singledigit/p/6381742.html
Copyright © 2011-2022 走看看