シンプルなエラーの作成
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チャレンジ
初心者このチャレンジでは、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
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
11複合型:スライス
スライス入門スライスリテラルの宣言`make` によるスライスの作成スライスの長さと容量スライス要素へのアクセス要素の追加既存のスライス/配列のスライススライスの反復処理スライスのコピーまとめ:動的リスト14エラーハンドリングの基本
エラーの概念`error` インターフェースエラーを返す関数エラーのチェックシンプルなエラーの作成フォーマット済みエラーの作成基本的なエラーハンドリングまとめ:問題への対処