Menu
Coddy logo textTech

シンプルなエラーの作成

CoddyのGOジャーニー「基礎」セクションの一部 — レッスン 106/109。

Goでは、標準ライブラリの errors.New() 関数を使用してカスタムエラーを作成できます。

errorsパッケージをインポートします:

import (
    "errors"
    "fmt"
)

メッセージを指定してシンプルなエラーを作成します:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", result)
    }
}

出力は次のようになります:

Error: cannot divide by zero
challenge icon

チャレンジ

初心者

このチャレンジでは、errors.New() 関数を使用して Go で単純なエラーを作成する練習をします。

ユーザー名が有効かどうかをチェックする関数があります。ユーザー名は少なくとも 5 文字以上であれば有効とみなされます。あなたのタスクは、ユーザー名が短すぎる場合に適切なエラーを返すことで、関数を完成させることです。

チートシート

標準ライブラリの errors.New() を使用してカスタムエラーを作成します:

import (
    "errors"
    "fmt"
)

関数からエラーを返します:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

エラーを処理します:

result, err := divide(10, 0)
if err != nil {
    fmt.Println("Error:", err)
} else {
    fmt.Println("Result:", result)
}

自分で試してみよう

package main

import (
	"errors"
	"fmt"
)

func main() {
	// 有効なユーザー名でテスト
	result, err := validateUsername("gopher123")
	if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println(result)
	}

	// 無効なユーザー名でテスト
	result, err = validateUsername("go")
	if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println(result)
	}
}

func validateUsername(username string) (string, error) {
	if len(username) < 5 {
		// TODO: "username must be at least 5 characters long" というメッセージでエラーを返す
		// ヒント: errors.New() を使用して新しいエラーを作成する
		return "", nil // この行を置き換える
	}
	return "Username is valid", nil
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン