golang-错误处理
Posted quguanwen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang-错误处理相关的知识,希望对你有一定的参考价值。
1.错误处理
如果要写出健壮 ,易维护的代码 ,错误处理就是关键 ,考虑到可能会发生的意外对其进行处理
go的错误处理与众不同 ,在调用可能出现问题的方法和函数时都会返回一个类型为error的值 ,由调用者去决定如何处理错误
错误是一个值类型error ,零值为nil
2.接受错误类型
可能文件资源不存在
1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 ) 7 8 func main() { 9 text,err := ioutil.ReadFile("fuben.go") 10 if err == nil { 11 fmt.Println(err) 12 } 13 fmt.Printf("%s",text) 14 }
3.创建错误
errors.New("提示")
1 package main 2 3 import ( 4 "errors" 5 "fmt" 6 ) 7 8 func main() { 9 err := errors.New("出现错误") 10 if err != nil { 11 fmt.Println(err) 12 } 13 }
fmt.Errof() #格式化创建错误
1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 name,role := "屈冠文","admin" 9 err:=fmt.Errorf("%v is not permission %v",name,role) 10 if err != nil{ 11 fmt.Println(err) 12 } 13 }
4.从函数和方法返回错误
在签名处定义好error返回类型
1 package main 2 3 import ( 4 "fmt" 5 "strconv" 6 ) 7 8 func EvenNumber(num int) (string, error) { //多返回值括号括起来 9 if num%2 != 0 { 10 err := fmt.Errorf("%v不是偶数", num) 11 return "", err 12 } 13 return strconv.Itoa(num) + "是偶数", nil 14 } 15 16 func main() { 17 a := 12 18 b := 13 19 c := 18 20 ret, err := EvenNumber(a) 21 fmt.Println(ret, err) 22 ret, err = EvenNumber(b) 23 fmt.Println(ret, err) //这里直接打印了异常 24 ret, err = EvenNumber(c) 25 fmt.Println(ret, err) 26 }
5.painc
错误中断程序运行 ,谨慎使用 ,当出现painc立即中断程序 (当错误无法解决或继续执行造成更多错误时使用)
1 package main 2 3 import "fmt" 4 5 func main() { 6 fmt.Println("1") 7 panic("出现问题,中止") 8 fmt.Println("2") 9 }
以上是关于golang-错误处理的主要内容,如果未能解决你的问题,请参考以下文章