手记

Go语言的异常处理之errors,panic, recover


error接口:源码

Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型,该接口的定义如下:

type error interface {

    Error() string

}

Go语言的标准库代码包errors为用户提供如下方法:

package errors

type errorString struct { 

    text string 

}

func New(text string) error { 

    return &errorString{text} 

}

func (e *errorString) Error() string { 

    return e.text 

}

另一个可以生成error类型值的方法是调用fmt包中的Errorf函数:

package fmt

import "errors"

func Errorf(format string, args ...interface{}) error {

    return errors.New(Sprintf(format, args...))

}

示例:

// code_027_error_panic_recover project main.go

package main

import (

    "errors"

    "fmt"

)

//Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型,New, Error, Errorf方法

func Divide(a, b float64) (result float64, err error) {

    if b == 0 {

        result = 0.0

        err = errors.New("runtime error:divide by zezo")

        return

    }

    result = a / b

    err = nil

    return

}

func main() {

    var err1 error = errors.New("a normal err1")

    fmt.Println(err1)

    var err2 error = fmt.Errorf("%s", "normal err2")

    fmt.Println(err2)

    r, err := Divide(10.0, 0)

    if err != nil {

        fmt.Println(err) //报错,错误处理

    } else {

        fmt.Println(r) //使用返回值

    }

}

未完待续。。。

©著作权归作者所有:来自51CTO博客作者ck_god的原创作品,如需转载,请注明出处,否则将追究法律责任

G


0人推荐
随时随地看视频
慕课网APP