Go学习Day10

异常处理
1.error
Go语言内置了一个简单的错误接口作为一种错误处理机制,接口定义如下:

type error interface {
	Error() string
}

它包含一个 Error() 方法,返回值为string

Go的error构造有两种方式,分别是

第一种:errors.New()

第二种:fmt.Errorf()

需要注意的点:

a.如果函数需要处理异常,通常将error作为多值返回的最后一个值,返回的error值为nil则表示无异常,非nil则是有异常。

b.一般先用if语句处理error!=nil,正常逻辑放if后面。

Go语言的error代表的并不是真“异常”,只是通过返回error来表示错误信息,换句话说,不是运行时错误范围预定义的错误,某种不符合期望的行为并不会导致程序无法运行(自然数函数例子),都应使用error进行异常处理。当程序出现重大错误,如数组越界,才会将其当成真正的异常,并用panic来处理。

2.panic
Go不使用try…catch方法来处理异常,而是使用panic和recover
例:

package main

import "fmt"

func main(){
  defer func(){
    fmt.Println("我是defer里面第一个打印函数")
    if err:=recover();err!=nil{
        fmt.Println(err)
    }
    fmt.Println("我是defer里面第二个打印函数")
  }()
  f()
}

func f(){
  fmt.Println("1")
  panic("我是panic")
  fmt.Println("2")
}

输出为:

1
我是defer里面第一个打印函数
我是panic
我是defer里面第二个打印函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值