1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Go言語】エラーに自分で情報を追加する方法

Posted at

pkg/errorsについて

pkg/errors は、エラーハンドリングを強化するために使うパッケージです。今回はこれを使います。

Go1.13からは標準の errors パッケージというのが標準パッケージに追加されたのですが、errorsは未だにいろんなところで見かけるので、今回は pkg/errors を使います。

移行についても紹介します。

go getする

go get github.com/pkg/errors

errors.Wrapを使ってエラーに情報を追加する

errors.Wrap は、エラーに情報を追加するための関数です。

以下のようにerrにエラーが入っているときに、errors.Wrap を使うとエラーに情報を追加することができます。
以下のように関数がエラーを返すときにWrapで情報を追加してあげることができます。

package main

import (
	"fmt"
	"io/ioutil"

	"github.com/pkg/errors"
)

func main() {
	err := someTimesError()
	if err != nil {
    fmt.Println(err)
		return
	}
}

func someTimesError() error {
	if err != nil {
		return nil, errors.Wrap(err, "someTimesError")  // ここでエラーに情報を追加
	}
	return
}

errorsへの移行について

fmt.Errorfを使用することでWrapと同じようにエラーに情報を追加することができます。

Errorf自体はエラーを作成する関数ですが、%wを使うことで、エラー文の中に現在のエラーを埋め込むことができるので、これを使うことでWrapと同じようにエラーに情報を追加することができます。

fmt.Errorf("message %w", err)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?