• 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 }
    View Code

    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 }
    View Code

      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 }
    View Code

    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 }
    View Code

    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 }
    View Code

        

      

  • 相关阅读:
    docker安装wnameless/oracle-xe-11g并运行(手写超详细)
    QQ浏览器兼容模式问题
    list中放map的几种方式
    oracle存储函数实例
    vue中使用Element主题自定义肤色
    使用eclipse初步学习vue.js基础==》v-for的使用 ②
    使用eclipse初步学习vue.js的基本操作 ①
    发布网站的流程演示
    bookkeeper table service调研
    python爬取今日头条街拍
  • 原文地址:https://www.cnblogs.com/quguanwen/p/11755166.html
Copyright © 2020-2023  润新知