Go では、高度な例外を処理するためのベスト プラクティスには、try-catch-finally ステートメントを使用して例外を処理することが含まれます。カスタム エラー タイプを作成して、より意味のある例外情報を提供します。例外のソースを追跡するには、エラー値を渡します。パニックとリカバリを使用して重大なエラーを処理します。
Go での例外処理は非常に重要です。コードをクリーンに保ち、何かが起こったときにアプリケーションがクラッシュしないようにするのに役立ちます。エラーで。この記事では、Go における高度な例外処理のベスト プラクティスに焦点を当て、実際のケースを通して説明します。
try-catch-finally
ステートメント try-catch-finally
ステートメントは、例外を処理する標準的な方法です。 try
ブロックには例外をスローする可能性のあるコードが含まれていますが、catch
ブロックは例外の発生後に実行されます。 finally
ブロックは、例外が発生したかどうかに関係なく、常に実行されます。
func divide(a, b int) (int, error) { if b == 0 { return 0, errors.New("division by zero") } return a / b, nil } func main() { result, err := divide(10, 2) if err != nil { fmt.Println("Error:", err) } else { fmt.Println("Result:", result) } }
Go でカスタム エラー タイプを作成するのは非常に簡単で、error
インターフェイスを実装するだけです。
type MyError struct { message string } func (e MyError) Error() string { return e.message }
カスタム エラー タイプを使用すると、例外に対してより意味のある情報を提供できます。
Go でエラーを渡すことは、例外のソースを追跡できるため、非常に重要です。エラー値は変数に保存したり、関数の引数として渡すことができます。
func getFromDB(id int) (string, error) { row := db.QueryRow("SELECT name FROM users WHERE id = ?", id) var name string err := row.Scan(&name) if err != nil { return "", err } return name, nil } func processUser(id int) error { name, err := getFromDB(id) if err != nil { return err } fmt.Println("User name:", name) return nil }
パニックは、プログラムを予期せず終了させる重大なエラーに対する反応です。 panic
関数を使用してパニックを引き起こし、recover
関数を使用してパニックから回復できます。
func checkPassword(password string) { if len(password) < 8 { panic("password too short") } } func main() { defer func() { if r := recover(); r != nil { fmt.Println("Error:", r) } }() checkPassword("notstrong") }
次に、例外を処理するために Go を使用する実践的なケースを示します:
try- catch
ステートメントはファイル読み取りエラーを処理します。 try-catch-finally ステートメント、カスタム エラー タイプ、エラー配信、パニック、およびリカバリを活用することで、例外を効率的に処理し、コードを整理して保守しやすくすることができます。
以上がGo言語を使用した高度な例外処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。