どのように全局的な例外処理を実装したらよいか
パニック例外を捕捉して処理するには、Go言語のグローバルな例外処理を実現するためにdeferとrecoverを使用できます。
Go言語では、defer文は関数が終了する前に実行され、recover関数はpanic例外をキャッチしてpanicの値を返します。この2つのキーワードを組み合わせることで、最上位の関数に統一的な例外処理メカニズムを追加できます。
こちらがサンプルのコードです。
package main
import (
"fmt"
)
func main() {
defer func() {
if r := recover(); r != nil {
fmt.Println("发生了一个异常:", r)
}
}()
// 这里是你的业务逻辑代码
// ...
panic("手动触发一个异常")
}
deferとrecoverをmain関数で使用した上記例では、panic(“手動でパニックを起こす”)を実行するとパニック例外が発生し、recoverで補足され、その後エラーメッセージが出力されます。
この例外処理コードを必要に応じてプロジェクトのエントリポイントに配置することで、グローバルな例外処理を実現できます。