golangのエラー処理方法は何ですか?

DDD
リリース: 2023-08-23 13:46:16
オリジナル
2297 人が閲覧しました

Golang のエラー処理メソッドには次のものが含まれます: 1. エラー値を返します。関数は追加の戻り値としてエラー値を返すことができます。戻り値は通常、関数が正常に実行されたかどうかを示すために使用されます。2. エラー関数が戻る前に誤った操作を処理できる処理関数、遅延メカニズム、 3. プログラムを直ちに停止し、対応するエラー処理を実行できるパニックとリカバリ、 4. より多くの情報と関数を備えたカスタム エラー タイプで型アサーションを使用できるエラーの詳細などを取得します。

golangのエラー処理方法は何ですか?

この記事の動作環境: Windows 10 システム、Go1.20.4 バージョン、Dell G3 コンピューター。

Golang は、Google によって開発されたオープンソース プログラミング言語です。エラー処理においていくつかの独自の機能とメソッドを備えています。以下に、Golang での一般的なエラー処理方法をいくつか示します。

戻りエラー値:Golang では、戻り値は通常、関数が正常に実行されたかどうかを示すために使用されます。関数は追加の戻り値としてエラー値を返すことができます。このエラー値は通常、エラー インターフェイスを実装する型です。関数が正常に実行された場合は nil が返され、関数が失敗した場合は空ではないエラー値が返されます。

例:

func Divide(a, b float64) (float64, error) { if b == 0 { return 0, errors.New("division by zero") } return a / b, nil }
ログイン後にコピー

この関数を呼び出すと、返されたエラー値を確認することで、関数が正常に実行されたかどうかを判断できます。エラー値が nil の場合は関数の実行が成功したことを意味し、それ以外の場合は関数の実行が失敗したことを意味し、エラー値に基づいて対応するエラー処理を実行できます。

エラー処理関数:Golang は、関数が戻る前にエラー処理を含むいくつかのクリーンアップ操作を実行できる defer と呼ばれるメカニズムを提供します。 defer キーワードを使用すると、関数が戻る前に呼び出されるエラー処理関数を定義できます。

例:

func readFile() error { file, err := os.Open("file.txt") if err != nil { return err } defer file.Close() // 读取文件的操作 // ... return nil }
ログイン後にコピー

上の例では、関数が戻る前にファイルを閉じるために defer キーワードが使用されています。これにより、関数内でエラーが発生したかどうかに関係なく、関数が戻る前に必ずファイルが閉じられるようになります。

パニックとリカバリ:Golang は、重大なエラー状況を処理するために、パニックとリカバリという 2 つの組み込み関数を提供します。プログラムで実行の継続を妨げるエラーが発生した場合、パニック機能を使用してパニックを引き起こし、プログラムの実行をただちに停止させることができます。その後、recover 関数を使用して defer 関数でパニックをキャプチャし、それに応じてエラーを処理できます。

例:

func divide(a, b float64) float64 { if b == 0 { panic("division by zero") } return a / b } func main() { defer func() { if r := recover(); r != nil { fmt.Println("Recovered from panic:", r) } }() result := divide(10, 0) fmt.Println("Result:", result) }
ログイン後にコピー

上の例では、除数が 0 の場合、パニックがトリガーされます。 defer 関数の Recovery 関数を使用して、パニックをキャプチャし、パニック情報を出力します。これにより、プログラムのクラッシュが防止され、パニックが適切に処理されます。

カスタム エラー タイプ:組み込みエラー インターフェイスを使用してエラーを表すことに加えて、Golang では独自のエラー タイプを定義することもできます。カスタム エラー タイプには、特定のエラー処理のニーズを満たすために、より多くの情報と機能を含めることができます。

例:

type MyError struct { message string code int } func (e MyError) Error() string { return fmt.Sprintf("%s (code: %d)", e.message, e.code) } func sqrt(n float64) (float64, error) { if n < 0 { return 0, MyError{"negative number", 100} } // 计算平方根的操作 // ... return math.Sqrt(n), nil }
ログイン後にコピー

上の例では、カスタム エラー タイプ MyError が定義されており、これにはエラー メッセージとエラー コードが含まれています。関数 sqrt では、入力値が負の数の場合、エラー情報とエラーコードを含む MyError 型の値が返されます。この関数を呼び出すときに、型アサーションを使用してエラーに関する特定の情報を取得できます。

概要

Golang のエラー処理メソッドには、エラー値の返し、エラー処理関数、パニックとリカバリ、カスタム エラー タイプが含まれます。これらの方法は、特定のニーズやシナリオに応じて選択して使用できます。

以上がgolangのエラー処理方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!