golang-错误处理

sunnyJam 2019-10-28

1.错误处理

如果要写出健壮 ,易维护的代码 ,错误处理就是关键 ,考虑到可能会发生的意外对其进行处理

go的错误处理与众不同 ,在调用可能出现问题的方法和函数时都会返回一个类型为error的值 ,由调用者去决定如何处理错误

错误是一个值类型error ,零值为nil

2.接受错误类型

可能文件资源不存在

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {
    text,err := ioutil.ReadFile("fuben.go")
    if err == nil {
        fmt.Println(err)
    }
    fmt.Printf("%s",text)
}

3.创建错误

errors.New("提示")

package main

import (
   "errors"
   "fmt"
)

func main() {
   err := errors.New("出现错误")
   if err != nil {
      fmt.Println(err)
   }
}

fmt.Errof()          #格式化创建错误

package main

import (
   "fmt"
)

func main() {
   name,role := "屈冠文","admin"
   err:=fmt.Errorf("%v is not permission %v",name,role)
   if err != nil{
      fmt.Println(err)
   }
}

4.从函数和方法返回错误

在签名处定义好error返回类型

package main

import (
   "fmt"
   "strconv"
)

func EvenNumber(num int) (string, error) { //多返回值括号括起来
   if num%2 != 0 {
      err := fmt.Errorf("%v不是偶数", num)
      return "", err
   }
   return strconv.Itoa(num) + "是偶数", nil
}

func main() {
   a := 12
   b := 13
   c := 18
   ret, err := EvenNumber(a)
   fmt.Println(ret, err)
   ret, err = EvenNumber(b)
   fmt.Println(ret, err)   //这里直接打印了异常
   ret, err = EvenNumber(c)
   fmt.Println(ret, err)
}

5.painc

错误中断程序运行 ,谨慎使用 ,当出现painc立即中断程序 (当错误无法解决或继续执行造成更多错误时使用)

package main

import "fmt"

func main() {
    fmt.Println("1")
    panic("出现问题,中止")
    fmt.Println("2")
}

  

相关推荐