panic&&error

...

一点例子

 要不是考试要考,懒得看这俩货, 非高大上的项目估计用不到,提前处理下,不比用这个香

error 就是一个接口, 一个生成错误字符串的方法,总之就是和字符串有关系

type error interface {
    Error() string
}
package main

import (
	"errors"
	"fmt"
	"log"
)

func foo(x,y int) (int,error){
	if y == 0 {
		return y,errors.New("err emmit !!")
	}
	return x/y,nil
}

func main() {
	fmt.Println("main begin")
	if x,y := foo(3,2); y != nil{
		log.Println(x,y)
	}else {
		log.Println(x,y)
	}
	//log.Println(foo(3,2))
	fmt.Println("main exit")
}

...

panic 会翻车, 可以恢复

package main

import (
	"fmt"
)

func foo(){
	defer func(){
		if err := recover(); err != nil {
			fmt.Println(err)
		}
	}()
	var bar = []int{1}
	fmt.Println(bar[1])
}

func main(){
	foo()
	fmt.Println("exit")
}

  

原文地址:https://www.cnblogs.com/eiguleo/p/14959408.html