Go の
try-catch-finally は例外処理に使用されます。構文は次のとおりです。 try: 例外が発生すると、すぐに catch またはfinally に進みます。 catch: try でスローされた例外を処理します。例外が存在しない場合は実行されません。 finally: 例外があるかどうかに関係なく実行され、リソースをクリーンアップするためによく使用されます。
Go 言語では、try-catch-finally
ステートメントが使用されます。例外を処理します。構文は次のとおりです。
func try() { defer recover() // 可选,用于捕获恐慌异常 ... // 你的需要处理异常的代码 }
try
このブロックには、例外を処理する必要があるコードが含まれています。例外が発生した場合、try
ブロック内のステートメントは実行を直ちに停止し、実行フローは catch
ブロックまたは finally
ブロックに進みます。
catch
ブロックは、try
ブロックでスローされた例外を処理するために使用されます。 try
ブロック内のコードが例外をスローしない場合、catch
ブロックは実行されません。
catch
ブロックの構文は次のとおりです:
func catch() { r := recover() // 捕获 `try` 块中的恐慌异常 ... // 处理异常的代码 }
##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 サイトの他の関連記事を参照してください。