ホームページ  >  記事  >  バックエンド開発  >  Golang 例外処理の try-catch-finally

Golang 例外処理の try-catch-finally

PHPz
PHPzオリジナル
2024-04-16 08:48:021131ブラウズ

Go の

try-catch-finally は例外処理に使用されます。構文は次のとおりです。 try: 例外が発生すると、すぐに catch またはfinally に進みます。 catch: try でスローされた例外を処理します。例外が存在しない場合は実行されません。 finally: 例外があるかどうかに関係なく実行され、リソースをクリーンアップするためによく使用されます。

Golang 例外処理の try-catch-finally

Golang の例外処理における try-catch-finally

Go 言語では、try-catch-finally ステートメントが使用されます。例外を処理します。構文は次のとおりです。

func try() {
    defer recover() // 可选,用于捕获恐慌异常
    ... // 你的需要处理异常的代码
}

try

try このブロックには、例外を処理する必要があるコードが含まれています。例外が発生した場合、try ブロック内のステートメントは実行を直ちに停止し、実行フローは catch ブロックまたは finally ブロックに進みます。

catch

catch ブロックは、try ブロックでスローされた例外を処理するために使用されます。 try ブロック内のコードが例外をスローしない場合、catch ブロックは実行されません。

catch ブロックの構文は次のとおりです:

func catch() {
    r := recover() // 捕获 `try` 块中的恐慌异常
    ... // 处理异常的代码
}

finally

##finally try に関係なくブロックblock 例外がスローされた場合に実行されるかどうか。通常、リソースをクリーンアップしたり、その他の仕上げ操作を実行したりするために使用されます。

finally ブロックの構文は次のとおりです:

func finally() {
    ... // 清理资源或执行其他收尾操作
}

実用的なケース

次に、ファイル読み取り例外の処理例を示します:

import (
    "fmt"
    "io/ioutil"
)

func readFile(filename string) {
    defer recover()

    contents, err := ioutil.ReadFile(filename)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(contents))
}

func main() {
    readFile("existing_file.txt")
    readFile("non_existing_file.txt")
}

この例では、

try ブロックにファイル existing_file.txt を読み取るコードが含まれています。ファイルが存在し、正常に読み取ることができる場合、try ブロックは通常どおり実行され、内容がコンソールに出力されます。

catch ブロックは、try ブロックで発生する可能性のあるエラーを処理するために使用されます。ファイルが存在しない、または読み取れない場合、try ブロックは例外をスローし、実行は catch ブロックに進みます。 catch ブロックでは、例外がキャッチされ、コンソールに出力されます。

finally ブロックはオプションですが、ファイル ハンドルを閉じるなどのクリーンアップ操作を実行するために使用できます。

以上がGolang 例外処理の try-catch-finallyの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。