Go での遅延からの復帰
Go で関数がパニックになった場合にエラーを返す必要があるという問題が発生しています。コードの分析と修正は次のとおりです。
func getReport(filename string) (rep report, err error) { rep.data = make(map[string]float64) defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) switch x := r.(type) { case string: err = errors.New(x) case error: err = x default: err = errors.New("Unknown panic") } rep = nil // Invalidate rep } }() panic("Report format not recognized.") // rest of the getReport function... }
パニックと遅延の概念
コードの変更:
これらの変更により、getReport 関数は、無効なレポート形式が原因でパニックした場合にエラーを返すようになります。エラー メッセージは、パニック値 (文字列の場合) または不明なパニックを示す一般的なエラーのいずれかになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3