zoukankan      html  css  js  c++  java
  • Go错误

    1. error

    package main
    
    import (
    	"errors"
    	"fmt"
    )
    
    func main() {
    	/*
    	error:内置的数据类型,内置的接口
    		定义方法:Error() string
    
    	使用go语言提供好的包:
    		errors包下的函数:New(),创建一个error对象
    		fmt包下的Errorf()函数:
    			func Errorf(format string, a ...interface{}) error
    	 */
    	//1.创建一个error数据
    	err1 := errors.New("自己创建玩的。。")
    	fmt.Println(err1) //自己创建玩的。。
    	fmt.Printf("%T
    ", err1) //*errors.errorString
    
    	//2.另一个创建error的方法
    	err2 := fmt.Errorf("错误的信息码:%d", 100)
    	fmt.Println(err2) //错误的信息码:100
    	fmt.Printf("%T
    ", err2) //*errors.errorString
    
    	err3 := checkAge(-30) //您给定的年龄是:-30,不合法
    	if err3 != nil {
    		fmt.Println(err3)
    		return 
    	}
    	fmt.Println("程序。。。go on。。。")
    }
    
    //设计一个函数:验证年龄是否合法,如果为负数,就返回一个error
    func checkAge(age int) error {
    	if age < 0 {
    		//返回error对象
    		//return errors.New("年龄不合法")
    		err := fmt.Errorf("您给定的年龄是:%d,不合法", age)
    		return err
    	}
    	fmt.Println("年龄是:", age)
    	return nil
    }
    

    2. panic/recover

    package main
    
    import "fmt"
    
    func main() {
    	/*
    	panic:词义"恐慌",
    	recover:"恢复"
    	go语言利用panic(),recover(),实现程序中的极特殊的异常的处理
    		panic(),让当前的程序进入恐慌,中断程序的执行
    		recover(),让程序恢复,必须在defer函数中执行
    	 */
    	//恢复函数
    	//需要在panic之前执行到recover
    	defer func() {
    		if msg := recover(); msg != nil {
    			fmt.Println(msg, "程序回复啦。。。")
    		}
    	}()
    	funA()
    	//先被defer的后执行,后被defer的先执行
    	defer myprint("defer main:3.....")
    	funB() //panic传递到这,下面的下面不执行
    	defer myprint("defer main:4.....") //不会执行到这话
    
    	fmt.Println("main..over。。。。") //不会执行到这话
    
    }
    func myprint(s string) {
    	fmt.Println(s)
    }
    
    func funA() {
    	fmt.Println("我是一个函数funA()....")
    }
    
    func funB() { //外围函数
    
    	fmt.Println("我是函数funB()...")
    	defer myprint("defer funB():1.....")
    
    	for i := 1; i <= 10; i++ {
    		fmt.Println("i:", i)
    		if i == 5 {
    			//让程序中断
    			panic("funB函数,恐慌了") //下面的代码不执行
    		}
    	} //当外围函数的代码中发生了运行恐慌,只有其中所有的已经defer的函数全部都执行完毕后,该运行恐慌才会真正被扩展至调用处。
    	defer myprint("defer funB():2.....")
    }
    

      

  • 相关阅读:
    java调用oracle存储过程
    高富帅屌丝买房差异大 看看都该买什么房
    c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2
    .net 实现微信公众平台的主动推送信息
    HTML+CSS面试知识点分享(一)
    JS面试知识点分享(一)
    HTML+CSS面试知识点分享(二)
    jQuery选择器学习理解
    PB程序系统错误处理记录
    sql server2000 直接读取excel2003文件的sheet
  • 原文地址:https://www.cnblogs.com/yzg-14/p/12250976.html
Copyright © 2011-2022 走看看