Go の例外処理機能を拡張する方法には、追加情報を提供するカスタム エラー タイプを定義することが含まれます。例外をスローしてプログラムを中断し、エラー値を渡すには、panic キーワードを使用します。スローされた例外を処理し、プログラムの実行を再開するために、recover 関数を使用してエラー ハンドラーを作成します。
#Go 例外処理機能の拡張
Go 言語の例外処理メカニズムは、実行中のタイム エラーを処理するためのシンプルかつ効果的な方法を提供します。 。ただし、シナリオによっては、デフォルトの動作が制限されすぎる場合があります。この記事では、カスタム エラー タイプの使用、例外のスロー、エラー ハンドラーの作成など、Go の例外処理機能を拡張するいくつかの方法について説明します。カスタム エラー タイプ
Go 言語では独自のエラー タイプを定義でき、コードの読みやすさと保守性の向上に役立ちます。カスタム エラー タイプには、デバッグやトラブルシューティングに役立つ追加情報を含めることができます。type MyError struct { msg string } func (e MyError) Error() string { return e.msg } func someFunc() (int, error) { if somethingWrong { return 0, MyError{"Something went wrong!"} } return 1, nil }
例外のスロー
Go では、例外をスローするためにpanic キーワードが使用されます。例外はプログラムの通常の実行を中断し、エラーを示す値を渡します。
func someFunc() { if somethingWrong { panic("Something went wrong!") } }
エラー ハンドラーの作成
Go 言語には、例外からスローされたエラーを回復するためのrecover 関数が用意されています。例外を
error 型に変換し、プログラムが例外を処理できるようにします。
func main() { defer func() { if err := recover(); err != nil { // 处理错误 } }() someFunc() }
実践的なケース
次は、カスタム エラー タイプとエラー ハンドラーを使用して Web サーバーのエラーを処理する方法を示す実践的なケースです:
package main import ( "fmt" "net/http" ) type ServerError struct { code int message string } func (e ServerError) Error() string { return fmt.Sprintf("Error %d: %s", e.code, e.message) } func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if somethingWrong { http.Error(w, "Internal Server Error", http.StatusInternalServerError) return } // 其它代码 }) http.ListenAndServe(":8080", nil) }Go の例外処理機能を拡張することで、より堅牢で保守しやすいアプリケーションを作成できます。
以上がGolang の例外処理機能を拡張するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。