ホームページ > バックエンド開発 > Golang > golang はエラーの種類を決定します

golang はエラーの種類を決定します

王林
リリース: 2023-05-15 13:06:38
オリジナル
1323 人が閲覧しました

Golang はシンプルで効率的なプログラミング言語であり、強力な型システムと豊富なライブラリを備えており、開発者に大きな利便性を提供します。エラー処理は Go 言語において非常に重要なタスクです。プログラムの実行中にエラーが発生した場合、エラーを迅速かつ正確に見つけて対処できる必要があります。この目標を達成するには、エラーの種類を特定する方法を知る必要があります。一緒に調べてみましょう。

  1. エラーの種類とは何ですか?

エラー タイプは、Golang のエラー オブジェクトのタイプを指します。 Go 言語では、エラー タイプは、現在のエラー情報を表す文字列を返す「Error()」という名前のメソッドを定義するインターフェイス タイプです。 Golang コードでは、通常、エラー パッケージの New() 関数を使用して新しいエラー オブジェクトを作成します。コード例は次のとおりです。

  1. Golang でエラーの種類を判断する方法は非常に簡単です。型アサーションを使用してエラー オブジェクトを型変換するだけで済みます。タイプ アサーションでは、エラー オブジェクトをカスタム エラー タイプにアサートするなど、インターフェイス タイプを別のインターフェイス タイプにアサートできます。コード例は次のとおりです。
  2. import "errors"
    err := errors.New("this is an error")
    ログイン後にコピー
上記のコード例では、Error() メソッドを実装するカスタム エラー タイプ MyError を定義します。次に、doSomething() 関数で MyError のインスタンスを返します。 main() 関数では、型アサーションを通じてこのエラー オブジェクトを MyError 型に変換します。変換が成功した場合は、エラーの種類が MyError であることを意味し、必要に応じて処理できます。変換が失敗した場合、エラー オブジェクトは別の種類のエラーになります。

ここでの型アサーションの構文は "e, ok := err.(*MyError)" であることに注意してください。ここで、ok は型アサーションが成功したかどうかを示します。 err から MyError 型への変換が成功した場合、ok は true になり、それ以外の場合、ok は false になります。

型アサーションに加えて、エラー パッケージによって提供される Is() および As() 関数を使用して、エラー タイプを決定および変換することもできます。具体的な使用方法は次のとおりです。

type MyError struct {
    message string
}

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

func doSomething() error {
    return &MyError{message: "This is a custom error"}
}

func main() {
    err := doSomething()
    if e, ok := err.(*MyError); ok {
        // 错误类型是 MyError
        fmt.Println(e.message)
    } else if err != nil {
        // 其他类型的错误
        fmt.Println("error:", err)
    } else {
        // 没有发生错误
        fmt.Println("no error")
    }
}
ログイン後にコピー

エラーの種類の処理方法

  1. エラーの種類を特定した後、必要に応じてさまざまな処理方法を採用できます。 。一般的なエラー処理方法は次のとおりです。
3.1 エラー メッセージの出力

いくつかの軽微な問題がある場合は、エラー メッセージを直接出力できます。例:

if errors.Is(err, io.EOF) {
    // 错误类型是 io.EOF
}

var target *MyError
if errors.As(err, &target) {
    // 错误类型是 *MyError
}
ログイン後にコピー
上記のコードでは、 someFunc() 関数がエラーを返した場合、 fmt.Errorf() 関数を使用してエラー情報を出力し、呼び出し元に返します。

3.2 エラーを直接返す

エラーが重大な場合は、エラーを直接返し、上位の呼び出し元にエラーを処理させることができます。たとえば、次のようになります。上記のコードでは、 someFunc() 関数がエラーを返した場合、エラーを直接返し、上位レベルの呼び出し元にエラーの種類を判断させて処理させます。

3.3 標準ライブラリの処理メソッドを参照してください

いくつかの一般的なエラーの種類については、標準ライブラリが参照用にいくつかの処理メソッドを提供しています。たとえば、ファイルを開くのに失敗すると、標準ライブラリは os.PathError タイプのエラーを返します。このとき、標準ライブラリのアプローチを参照してそれを処理できます。まずファイルを開こうとします。開くのに失敗した場合は、os.IsNotExist() 関数と os.IsPermission() 関数を使用してエラーの種類を判断し、さまざまなエラー情報を返します。

概要

Golang では、エラー処理は非常に重要なタスクです。プログラムでエラーが発生した場合、迅速かつ正確にエラーを見つけて対処できる必要があります。この記事の導入を通じて、エラーの種類を判断する方法を学び、一般的なエラー処理方法を習得しました。同時に、型アサーション中に変換が成功したかどうかを判断する必要性など、いくつかの細かい点にも気づきました。この記事が、Golang でエラーを処理する際の皆様のお役に立てれば幸いです。

以上がgolang はエラーの種類を決定しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート