Go1.13 errors 패키지 사용법
Go1.13 errors 패키지 사용법
go 1.13에 errors 패키지가 추가되었습니다. 주로 다음과 같습니다.
정의
As(err error, target interface{}) bool
err의 체인에서 목표와 일치하는 첫 번째 오류를 찾았습니다. 만약에true를 되돌려줍니다. 그렇지 않으면false를 되돌려줍니다.
Is(err error, target error) bool
두 오류가 동일한지 판단합니다.
New(text string) error
새로운 error 대상을 되돌려줍니다. 내용이 같아도 두 개의 다른 대상입니다.
Unwarp(err error) error
만약 전송된 err 대상에 있다면
%w
키워드의 포맷 클래스는 반환값에서 이 원시 error를 해석합니다. 다중 플러그인은 첫 번째 것만 되돌려줍니다. 그렇지 않으면nil로 되돌려줍니다.예제 코드
package main
import (
"errors"
"fmt"
"os"
)
func main() {
// As
fmt.Println("-------As--------")
if _, err := os.Open("non-existing"); err != nil {
var pathError *os.PathError
if errors.As(err, &pathError) {
fmt.Println("Failed at path:", pathError.Path)
} else {
fmt.Println(err)
}
}
// New
fmt.Println("-------New--------")
err1 := errors.New("error1")
err2 := errors.New("error2")
// Is
fmt.Println("-------Is--------")
fmt.Println(errors.Is(err1, err2))
fmt.Println(errors.Is(err1, errors.New("error1")))
// Unwrap
fmt.Println("-------Unwrap--------")
e := errors.New("e")
e1 := fmt.Errorf("e1: %w", e)
e2 := fmt.Errorf("e2: %w", e1)
fmt.Println(e2)
fmt.Println(errors.Unwrap(e2))
fmt.Println(e1)
fmt.Println(errors.Unwrap(e1))
}
실행 결과:
# champly @ champlydeiMac in ~/go/src/demo/error [10:06:10]
$ go run errors.go
-------As--------
Failed at path: non-existing
-------New--------
-------Is--------
false
false
-------Unwrap--------
e2: e1: e
e1: e
e1: e
e
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Go Fiber 및 PlanetScale로 REST API 구축 - 4부다시 사용자 핸들러에 UpdateUser라는 새 함수를 추가합니다. 업데이트 사용자를 main.go에 등록 이제 응용 프로그램을 다시 실행하십시오. 이전에 생성한 사용자를 업데이트합니다. 응답 사용자가 존재하지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.