Golang でエラーをカスタム処理するにはどうすればよいですか?

WBOY
リリース: 2024-06-02 09:04:58
オリジナル
578 人が閲覧しました

Golang エラーをカスタマイズする方法は、カスタム エラー タイプを作成し、error.Error インターフェイスを実装することです。実際の場合は、カスタム エラー ハンドラーを使用してエラー情報をより具体的に指定し、デバッグと処理を容易にします。

如何自定义处理 Golang 中的错误?

Golang でエラーをカスタム処理するにはどうすればよいですか?

Golang には組み込みのエラー処理メカニズムが用意されていますが、場合によってはエラー処理のカスタマイズが必要になる場合があります。このチュートリアルでは、カスタム エラー ハンドラーを作成し、実際のユースケースに適用する方法を説明します。

カスタム エラー ハンドラー

カスタム エラー ハンドラーを作成するには、error.Error インターフェイスを使用します。このインターフェイスは、文字列タイプのエラーの説明をパラメータとして受け入れます。 error.Error 接口。此接口接受一个字符串类型的错误描述作为参数。

package myerrors

import "fmt"

type MyError struct {
    errorString string
}

func (e *MyError) Error() string {
    return e.errorString
}

func NewMyError(errorString string) error {
    return &MyError{errorString: errorString}
}
ログイン後にコピー

NewMyError 函数返回一个实现 error 接口的 MyError 类型。Error 方法返回错误描述字符串。

实战案例:验证用户输入

假设我们有一个函数 ValidateUserInput,它验证用户输入,如果输入无效,则返回错误。

package main

import (
    "fmt"
    "log"

    "myerrors"
)

func ValidateUserInput(input string) error {
    if input == "" {
        return myerrors.NewMyError("输入为空")
    }

    if len(input) < 5 {
        return myerrors.NewMyError("输入长度太短")
    }

    return nil
}

func main() {
    input := "Golang"

    err := ValidateUserInput(input)
    if err != nil {
        log.Fatalf("输入验证失败: %v", err)
    }

    fmt.Println("输入已验证成功")
}
ログイン後にコピー

ValidateUserInput 函数中,我们使用 NewMyError 函数创建自定义错误。然后,我们在 mainrrreee

NewMyError 関数は、error インターフェイスを実装する MyError タイプを返します。 Error メソッドは、エラー説明文字列を返します。

🎜実際のケース: ユーザー入力の検証🎜🎜🎜ユーザー入力を検証し、入力が無効な場合はエラーを返す関数 ValidateUserInput があるとします。 🎜rrreee🎜 ValidateUserInput 関数では、NewMyError 関数を使用してカスタム エラーを作成します。次に、main 関数のエラーをチェックし、適切なエラー メッセージを出力します。 🎜🎜カスタム エラー ハンドラーを使用すると、エラー情報をより具体的に指定できるため、デバッグと処理が容易になります。 🎜

以上がGolang でエラーをカスタム処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!