成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Golang 中的 Errors 包詳解,你都了解嗎?

開發(fā) 后端
Errors 包提供了一些簡單易用的函數(shù)來處理和獲取錯(cuò)誤信息,借助 Errors 包可以實(shí)現(xiàn)非常強(qiáng)大的錯(cuò)誤處理功能。

在 Golang 中,errors 包是用于處理錯(cuò)誤的標(biāo)準(zhǔn)庫, errors 包提供的功能比較簡單,使用起來非常方便。接下來就具體講解一下 errors 包提供的幾個(gè)函數(shù)。

errors.New

func New(text string) error

錯(cuò)誤處理是開發(fā)過程中必不可少的,使用 errors.New 函數(shù)可以創(chuàng)建一個(gè)表示特定錯(cuò)誤的對(duì)象。接受一個(gè)字符串類型的參數(shù)(用于描述錯(cuò)誤信息),返回一個(gè) error 類型的值。例如:

package main

import "errors"

func main() {
	err := errors.New("invalid input")
}

error 類型是 builtin 包中定義的一個(gè)接口,定義如下:

type error interface {
	Error() string
}

可以看出此接口定義了一個(gè)基本的 Error 方法,用于返回錯(cuò)誤的描述信息。

package main

import (
	"errors"
	"fmt"
)

func main() {
	err := errors.New("invalid input")
	errDesc := err.Error()
	fmt.Println(errDesc) // 輸出 invalid input
}

errors.Is

func Is(err, target error) bool

用于判斷給定的錯(cuò)誤是否是目標(biāo)錯(cuò)誤類型或者基于目標(biāo)錯(cuò)誤類型包裝過的錯(cuò)誤,會(huì)遞歸檢查錯(cuò)誤鏈,直到找到目標(biāo)錯(cuò)誤類型或者到達(dá)錯(cuò)誤鏈的末尾。如果找到目標(biāo)錯(cuò)誤類型,則返回true,否則返回false。看個(gè)例子:

package main

import (
	"errors"
	"fmt"
)

func main() {
	err := errors.New("invalid input")
	err1 := errors.New("invalid input")
	err2 := fmt.Errorf("err2: [%w]", err)
	fmt.Println(errors.Is(err1, err)) // false
	fmt.Println(errors.Is(err2, err)) // true
}

因?yàn)?err 和 err1 都是使用 errors.New 函數(shù)創(chuàng)建的,所以使用 Is 判斷會(huì)返回 false。err2 是基于 err 包裝出來的,所以使用 Is 判斷會(huì)返回 true。

errors.AS

func As(err error, target any) bool

用于將錯(cuò)誤轉(zhuǎn)換為特定類型的錯(cuò)誤,As 函數(shù)會(huì)檢查 err 是否是 target 指向的類型的實(shí)例,如果是,將該實(shí)例賦值給 target 并返回 true。否則返回 false。看個(gè)例子:

package main

import (
	"errors"
	"fmt"
)

type MyError struct {
	Message string
}

func (e *MyError) Error() string {
	return e.Message
}
func main() {
	err := &MyError{
		Message: "This is a custom error",
	}
	var target *MyError
	if errors.As(err, &target) {
		fmt.Println("Custom error found:", target.Message)
	} else {
		fmt.Println("Custom error not found")
	}
}

使用 errors.As 來檢查 err 是否是 MyError 類型的實(shí)例,并將實(shí)例賦值給 target。運(yùn)行一下示例看下效果

$ go run main.go
Custom error found: This is a custom error

這個(gè)功能通常用于處理不同類型的錯(cuò)誤,根據(jù)錯(cuò)誤的類型采取對(duì)應(yīng)的處理方式。

errors.Unwrap

func Unwrap(err error) error

用于將一個(gè)錯(cuò)誤對(duì)象展開,得到下一層錯(cuò)誤對(duì)象,如果錯(cuò)誤對(duì)象沒有下一層錯(cuò)誤對(duì)象,則返回 nil。看個(gè)例子:

package main

import (
	"errors"
	"fmt"
)

func main() {
  originalErr := errors.New("original error")
	err := fmt.Errorf("error: %w", originalErr)
	unwrappedErr := errors.Unwrap(err)
	fmt.Println(unwrappedErr) // 輸出: original error
}

使用 fmt.Errorf 函數(shù)將 originalErr 做了一層包裝后得到 err,然后通過使用 Unwrap 將 err 解包并得包裝前的錯(cuò)誤對(duì)象 originalErr。需要注意的是 Unwrap 只能展開被 fmt.Errorf 包裝的錯(cuò)誤對(duì)象。如果想要展開其他類型的錯(cuò)誤對(duì)象,可以使用類型斷言操作符 `.` 進(jìn)行類型斷言。

小結(jié)

errors 包提供了一些簡單易用的函數(shù)來處理和獲取錯(cuò)誤信息,借助 errors 包可以實(shí)現(xiàn)非常強(qiáng)大的錯(cuò)誤處理功能。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2021-01-07 05:40:13

BLE模塊Android

2020-02-27 10:49:26

HTTPS網(wǎng)絡(luò)協(xié)議TCP

2021-03-28 09:26:30

HttpHttp協(xié)議網(wǎng)絡(luò)協(xié)議

2023-12-07 08:13:58

Java開發(fā)

2024-02-19 08:40:22

2018-06-21 07:25:04

2019-11-25 12:38:14

混合云云計(jì)算企業(yè)

2023-08-03 08:48:07

Golang接口

2023-11-27 15:02:37

BytesGolang

2012-02-06 13:52:33

JavaScript

2023-11-09 08:22:38

2025-01-21 00:00:00

權(quán)限模型RBAC

2023-08-02 09:07:27

Golangio 包

2023-10-18 08:22:38

BufioGolang

2023-08-31 09:28:12

Golang可導(dǎo)出函數(shù)

2019-09-17 09:31:10

2023-12-11 07:40:00

CDN網(wǎng)絡(luò)服務(wù)器

2023-09-26 07:38:53

c#Lambda表達(dá)式

2023-06-26 07:32:43

Kubernetes容器

2023-10-26 07:09:30

Golangrune字符
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩免费av一区二区 | 中文字幕亚洲区一区二 | 日韩精品久久一区二区三区 | 99久久久国产精品 | 性高湖久久久久久久久aaaaa | 黄片毛片 | 精品香蕉一区二区三区 | 亚洲精品免费视频 | 久久网亚洲 | 久在线| 国产欧美精品 | 在线观看国产三级 | 99久久精品国产毛片 | 国产午夜精品一区二区三区四区 | 国户精品久久久久久久久久久不卡 | 一区二区三区欧美在线 | 国产精品高清在线 | 亚洲午夜小视频 | 一本色道精品久久一区二区三区 | 久久不射电影网 | 欧美xxxⅹ性欧美大片 | 国产一区二区免费在线 | 精品国产一区二区三区日日嗨 | 久久久久久久久久久高潮一区二区 | 久久爱黑人激情av摘花 | 日韩免费视频一区二区 | 欧美一区二区三区在线看 | 亚洲欧美综合 | 亚洲成人国产综合 | 久久国| 国产美女特级嫩嫩嫩bbb片 | 欧美白人做受xxxx视频 | 成人精品啪啪欧美成 | 在线免费观看成年人视频 | 99亚洲 | 91中文字幕在线 | 九九精品在线 | 久久久婷 | 日日操视频 | 久久网一区二区 | 久久久久国产精品一区二区 |