Skip to main content

Get full access to 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス and 60K+ other titles, with a free 10-day trial of O'Reilly.

There are also live events, courses curated by job role, and more.

5.1 エラーの書き方

Goのエラーが error インタフェースを満たす値だということは説明しました。アプリケーションでエラーを生成する方法は大きく2つあります。1つは標準ライブラリの関数を使って生成する方法、もう1つはアプリケーション独自のエラー型を定義する方法です。

5.1.1 errors.New

もっともシンプルにエラーを生成する方法が errors.New() を使ってエラーを宣言する方法です。シンプルにエラーだと呼び出し元へ伝えたいときに errors.New() が役に立つでしょう。また、ライブラリを作成する場合などは ErrNotFound というような名前の変数としてエラーを公開しておくと、呼び出し元のプログラムが呼び出し先のライブラリ側で発生したエラーを区別してハンドリングできます。

var ErrNotFound = errors.New("not found")

func findBook(isbn string) (*Book, error) {
	// ...
	// 値が取得できなかったため ErrNotFound を返す
	return nil, ErrNotFound
}

io パッケージの io.EOF も以下のように errors.New() を使ってエラーを宣言しています。

var EOF = errors.New("EOF")

5.1.2 fmt.Errorf

fmt.Errorf() を使ってフォーマットされた文字列を元にエラーを生成できます。フォーマットを使ったエラーの生成は以下のようになります。

func validate(length int) error {
	if length <= 0 {
		return 

Get 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.

Don’t leave empty-handed

Get Mark Richards’s Software Architecture Patterns ebook to better understand how to design components—and how they should interact.

It’s yours, free.

Get it now
Cover of Software Architecture Patterns

Check it out now on O’Reilly

Dive in for free with a 10-day trial of the O’Reilly learning platform—then explore all the other resources our members count on to build skills and solve problems every day.

Start your free trial Become a member now