Golang でさまざまなエラーの種類を識別するにはどうすればよいですか?

王林
リリース: 2024-06-04 10:00:57
オリジナル
609 人が閲覧しました

Golang ではエラーの種類の認識が非常に重要です。組み込みエラー タイプには、error、ValueError、TypeError、および IndexOutOfBoundsError が含まれます。カスタム エラー タイプは、エラー インターフェイスを実装することで定義できます。エラーの種類の識別は、errors.Is 関数または switch ステートメントを通じて行うことができます。エラーの種類を識別することで、さまざまな状況でエラーを適切に処理する堅牢な Golang プログラムを作成できます。

如何识别 Golang 中的不同错误类型?

Golang でさまざまな種類のエラーを識別する

Golang では、さまざまな種類のエラーを識別することが重要です。この記事では、よくあるエラーの種類とその対処方法をいくつか紹介します。

組み込みエラー タイプ

  • error: 最も基本的なエラー タイプで、一般的なエラー状態を表すために使用されます。
  • ValueError: 値が無効または不適切であることを示すエラー。
  • TypeError: 型の不一致エラーを示します。
  • IndexOutOfBoundsError: 配列またはスライスのインデックスが範囲外であることを示すエラー。

カスタム エラー タイプ

組み込みのエラー タイプに加えて、独自のカスタム エラー タイプを定義することもできます。これを行うには、error インターフェイスを実装する必要があります: error 接口:

type myError struct {
    msg string
}

func (e myError) Error() string {
    return e.msg
}
ログイン後にコピー

识别错误类型

可以使用 errors.Is 函数来比较两个错误类型:

if errors.Is(err, os.ErrNotExist) {
    // 文件不存在
}
ログイン後にコピー

使用 switch 语句识别错误类型

为了处理不同类型的错误,可以使用 switch 语句:

switch err := f(); {
case err == nil:
    // 操作成功
case errors.Is(err, os.ErrNotExist):
    // 文件不存在
case errors.Is(err, myError{}):
    // 自定义错误
default:
    // 其他类型的错误
}
ログイン後にコピー

实战案例

考虑一个从文件中读取数据的函数:

func readFile(filename string) (string, error) {
    data, err := ioutil.ReadFile(filename)
    if err != nil {
        if errors.Is(err, os.ErrNotExist) {
            return "", myError{"文件不存在"}
        }
        return "", err
    }
    return string(data), nil
}
ログイン後にコピー

在这个例子中,readFile 函数使用 errors.Is 函数来检查潜在的 os.ErrNotExist 错误,并将其封装为自定义 myErrorrrreee

エラーの種類を特定します

errors.Is 関数を使用して 2 つのエラーの種類を比較できます:

rrreee

🎜使用 switch ステートメントはエラーのタイプを識別します🎜🎜🎜さまざまなタイプのエラーを処理するには、switch ステートメントを使用できます: 🎜rrreee🎜🎜実際的なケース🎜🎜🎜 ファイルからデータを読み取る関数を考えてみましょう: 🎜 rrreee🎜 この例では、readFile 関数は errors.Is 関数を使用して潜在的な os.ErrNotExist エラーをチェックし、それらをカスタム エラーとしてカプセル化します。 myError タイプ。 🎜🎜🎜結論🎜🎜🎜さまざまなタイプのエラーを識別して処理することで、堅牢で信頼性の高い Golang プログラムを作成できます。組み込みのエラー タイプ、カスタム エラー タイプ、およびエラー認識テクノロジーを使用すると、アプリケーションがさまざまな状況でエラーを適切に処理できるようになります。 🎜

以上がGolang でさまざまなエラーの種類を識別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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