Golang ライブラリおよびフレームワークのエラー処理パターン
はじめに:
プログラミング プロセスにおいて、エラー処理は重要なタスクです。適切なエラー処理により、コードの可読性、保守性、信頼性が向上します。 Golang は、簡潔で効率的かつ同時実行可能なプログラミング言語として、いくつかのエレガントなエラー処理モードも提供します。この記事では、いくつかの一般的なエラー処理パターンを調査し、コード例で説明します。
1. エラーの種類
Golang では、エラーは組み込みのエラー タイプで表されます。 Error は、エラーの詳細を説明する文字列を返す Error() メソッドを 1 つだけ持つインターフェイス タイプです。例:
type error interface { Error() string }
エラー パッケージを使用して単純なエラーを作成できます:
import "errors" func divide(a, b float64) (float64, error) { if b == 0 { return 0, errors.New("division by zero") } return a / b, nil }
エラー パッケージを使用することに加えて、fmt パッケージの Errorf 関数を使用して、フォーマットされた文字列エラー:
import "fmt" func divide(a, b float64) (float64, error) { if b == 0 { return 0, fmt.Errorf("division by zero: %f / %f", a, b) } return a / b, nil }
2. エラー処理モード
result, err := divide(10, 2) if err != nil { fmt.Printf("error: %s ", err.Error()) } else { fmt.Printf("result: %f ", result) }
func processFile(filename string) error { file, err := os.Open(filename) if err != nil { return err } defer file.Close() // 处理文件 return nil }
func process() { defer func() { if r := recover(); r != nil { fmt.Printf("recovered from panic: %v ", r) } }() panic("something went wrong") // 触发panic // 继续执行后续的操作 }
3. 一般的なエラー処理モード
import "log" func divide(a, b float64) (float64, error) { if b == 0 { err := errors.New("division by zero") log.Println(err) return 0, err } return a / b, nil }
type DivisionError struct { dividend, divisor float64 } func (e *DivisionError) Error() string { return fmt.Sprintf("division by zero: %f / %f", e.dividend, e.divisor) } func divide(a, b float64) (float64, error) { if b == 0 { err := &DivisionError{a, b} log.Println(err) return 0, err } return a / b, nil }
これにより、呼び出し元は特定のエラー タイプに基づいてエラー処理を実行できます:
result, err := divide(10, 0) if err != nil { if e, ok := err.(*DivisionError); ok { fmt.Printf("division error: %s ", e.Error()) } else { fmt.Printf("error: %s ", err.Error()) } } else { fmt.Printf("result: %f ", result) }
概要:
Golang プログラムを作成する場合、適切なエラー処理が非常に重要です。この記事では、エラー戻り、エラー配信、エラー回復などの一般的なエラー処理パターンについて説明します。これらのエラー処理パターンを正しく使用すると、コードの読みやすさ、保守性、信頼性を向上させることができます。この記事が、Golang ライブラリやフレームワークを開発する際のエラー処理において読者の役に立てば幸いです。
以上がGolang ライブラリとフレームワークのエラー処理パターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。