Go Wiki: Go2ErrorHandlingFeedback
Go 2 エラー処理ドラフトデザインに関するフィードバック
このページは、Go 2 のエラー処理ドラフトデザインから始まったフィードバックと議論を収集し、整理することを目的としています。
ブログ、Medium、GitHub Gists、メーリングリスト、Google ドキュメントなどにフィードバックを投稿し、そのリンクをここに掲載してください。
下部に記載されている未分類の提案を分類するのを手伝ってください。
2019年6月19日更新 – このフィードバックに基づいて、try組み込み関数に関する提案を投稿しました。これに対し、#32437 で多くのフィードバックが寄せられました (スレッド表示はこちら)。
人々が自身のコードで実験する時間を確保するため、7月1日までこの問題に関するコメントを無効にしています。tryhard を使った試用変換を含め、自身のコードで一般的な try アプローチを使用した経験報告をぜひお寄せください。ありがとうございます!
「try 提案」に関する経験
このリストに追加
- テンプレート: あなたの名前、「タイトル」、YYYY年MM月
要件
新しいエラー処理方法の要件に関する議論。
-
Warren Stephens、「Go 2
handleは行番号、ソースファイル名、バージョンを提供すべき」、2018年12月 -
Liam Breck、「Go 2 エラー処理で考慮すべき要件」、2018年9月
-
jimmyfrasche、「エラーや nil を特殊ケース化しない」、2018年9月
-
Matt Dee「エラー処理はカスタムエラー型をサポートすべき」、2018年8月
-
Ian Lance Taylor、「基準の不完全なリスト」GitHub提案議論より、2018年5月
-
Rob Pike (@matjam が投稿)「Simplicity is Complicated」、2015年12月
支持
これには、既存のハンドラーの連鎖/スタッキングを、変更せずに支持することが含まれます。
-
Tokyo Gophers、「Go 2 フィードバックイベントからの支持コメント」、2018年10月
-
Adam Bouhenguel「より宣言的なエラー処理の支持」、2018年8月
-
Daniel Theophanes、「Go 2 デザイン: エラー処理の純粋な利点」、2018年8月
-
Alexandru-Paul Copil、「若干の修正と考慮事項を伴う支持」、2021年9月
コード例
既存の提案を使用するように変更されたコード。
-
Daniel Milde、「gdu で check-handle ドラフト構文を使用する」、2021年5月
-
Mateusz Czapliński、「エラー処理を持つ実際のコードの一部を Go 2 「デザインドラフト」に変換する」、2018年8月
-
Blake Mizerany、「check/handle を使用する際の部分書き込みを最もよく考慮する方法は?」、2018年8月
反対
対案なしの批判
-
Pasha Osipyants、「現在の Go の可能性を使用したエラー処理メカニズム」、2019年2月
-
匿名、「Go 2 エラー処理の非提案」、2018年10月
-
Stripe 開発者、「Go 2 ドラフトデザインに関するフィードバック」、2018年10月
-
Tokyo Gophers、「Go 2 フィードバックイベントからの反対コメント」、2018年10月
-
Liam Breck、「Golang, How dare you handle my checks!」、2018年9月
-
Nate Finch、「Handle and Check, Let’s Not」、2018年9月
-
Jozef Slezak、「新しいキーワードの代わりにセミコロンを使用する: check+handle」、2018年9月
-
Shannon Wynter「Error Handling as it can already be done」、2018年8月
繰り返されるテーマ
以下の提案の中で繰り返し現れる概念。
-
代入によるハンドラの呼び出し、例:
v, ? := f()
参照: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 -
名前で複数のハンドラのうちの1つを呼び出す、例:
v := check f() ? name
参照: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
控えめな改訂
-
Leidong Liu、「a, b, !checkError := Sub(…)」、2019年11月
-
Jin Feng、「[ハンドラーなしの簡素化された Go 2 エラー処理ソリューション]、(https://gist.github.com/jfeng45/416d4ecb42a4df50bebf86ce1c41c668)"、2019年7月
-
Dave Arnold、「特別な check キーワードを代入の左側に移動」、2019年4月
-
Rockmen、「handle と ? を構文糖衣として追加」、2018年12月
-
Steve Manuel、「Go 2
handleステートメントがオプションで型スイッチを使用できるようにする」、2018年10月 -
Zlatko Bratkovic、「わずかな変更を伴う支持」、2018年10月
-
DeedleFake、「チェインメソッド呼び出しにおける
checkの不便さへの可能な解決策」、2018年9月 -
Yesuu Zhang、「check と handle パラメータを渡し、カスタムハンドルを実装」、2018年9月
-
Viktor Kojouharov、「新しいエラーデザインドラフトに関する特殊ケース化の削減」、2018年9月
-
Aleksei Pavliukov、「関数をハンドルパラメータとして使用する」、2018年9月
-
Savino Pio Liguori、「Go2 エラー処理設計に関するフィードバック」、2018年8月
-
Jeffrey Koehler、「Handle Chaining の支持; On Check について」、2018年8月
-
Garrus、「エラー処理に関する別の構文糖衣スタイル」、2018年8月
-
Paul Borman、「Go 2 エラー処理提案に対する反論」、2018年8月
-
krhubert、「テスト用のエラーデフォルトハンドラ」、2019年5月
-
Franz、変数の不変条件チェックのようにエラー処理を実装する。値が変更されると関数が呼び出される。これは他の状況でも使用できる。
-
Brandon Heenan、「簡潔で、より明確な制御フロー」、2021年5月
ハンドラチェインを削除
-
Markus Heukelom、「提案:
guardとmustキーワードを使ったエラー処理の改善」、2019年4月 -
Alessandro Arzilli、「オペレータとしての check とハンドラチェインに対する反対」、2018年8月
-
Simon Howard、「Go 2 エラー応答: 関数ごとに1つのハンドラ」、2018年8月
-
Eli Bendersky、「Go 2 エラー処理提案に関する考察」、2018年9月
-
Yoshiki Shibukawa、「すべてのハンドルには return ステートメントがあるべき」、2018年9月
対案
通常関数によるエラー処理
-
Azamat Kalberdiev、「直感的なコードでエラーを処理する」、2021年3月
-
Andrew Phillips、「ハンドラの代わりにクロージャを使用する」、2018年10月
-
Taihei Morikuni、「関数をエラーハンドラとして使用し、重複する if ステートメントを削除するための構文糖衣を追加」、2018年9月
-
Scott Pakin、「非ローカルリターンに基づく Go 2 エラー処理」、2018年9月
-
Greg Weber「関数とエラーリターンによるエラー処理?」、2018年9月。元々はgistにリンクされていました。
-
Gigi Sayfan、「Go 2 エラー処理フィードバック + 代替ソリューション」、2018年9月
-
Ruan Kunliang、「Go 2 のシンプルなエラー処理」、2018年8月
-
Martin Rode、「The return of the return, Go 2 のエラー処理」、2018年11月
ラベル付きエラーハンドラ
-
Joe Lapp、「ローカルのみの throw-catch エラー処理」、2021年10月
-
Danijel Premus、「既存の Go ラベルを使用する」、2018年12月
-
Burak Serdar、「err のハンドラは err と errHandler の両方を宣言し、侵襲性の低いラベル付きエラー処理」、2018年10月
-
John Forstmeier、「ラベル付きエラー処理」、2018年9月
-
Mikaël Cluseau、「複数のハンドラ、どの戻り値が使用されるか明確」、2018年9月
-
Kiura Magomadov、「Go2 ドラフトエラー処理への追加」、2018年9月
-
Liam Breck、「
#id/catchエラーモデル」、2018年9月 -
Marlon Che、「check と handle を分離してみては?」、2018年8月
インライン化
-
Patrick Kelly、「Go におけるエラー以上の処理」、2018年8月
-
Vlad Didenko、「
grab | name()を使ったエラー処理」、2017年11月 -
Gooid、「インラインスタイルエラー処理 (シンプルで明確)」、2018年8月
defer を使用
-
Victoria Raymond、「「check」にカスタムロジックを許可する代わりにエラーを返すことを強制する」、2018年8月
-
Night-walker と daokoder、「新しい構文を導入する代わりに defer を拡張して再利用する」、2014年6月
try/catch/finally 構文
-
Mathieu Devos、「Go2 エラー処理提案: スコープ付き Check/Handle」、2018年8月
-
Rust RFC、「トレイトベースの例外処理 (
catchはtryに類似)」、2016年2月 -
ZhiFeng Hu、「[Go2ErrorHandling] Go は例外ハンドラをサポートすべき」、2018年8月
-
Jan Semmelink、「if-else-undo-done」、2018年8月
-
Vladimir Utoplov、「Handling throws/throw idiom」、2018年9月
-
Gokan EKINCI、「try-with-resources」、2018年12月
その他の可能性
-
Alex Hornbake、「refuse. 条件付き return キーワード」、2019年6月
-
yaxinlx、「? を接尾辞として使用して、複数値タプルから最後のエラー値を削除する」、2019年3月
-
Plamen Stoev、「Go 2 ブロックレベルチェック」、2018年11月
-
Peter Goetz、「エラー処理の形式化と強制」、2017年9月
-
Fedir RYKHTIK、「感嘆符 (!) を使った Go 2 エラー処理」、2018年9月
-
Einthusan Vigneswaran、「エラーを認識するキーワード - return、defer、if、!=、およびエラーオブジェクトを最後の引数に強制する」、2018年9月
-
Andrew Phillips、「Go エラー処理の改善」、2017年10月
未分類
ここに残りの提案を分類するのを手伝ってください。
-
Joe Lapp、「エラー処理のための
on...return」、2021年10月 -
Andrew Gwozdziewycz、「Go エラーのチェック」、2019年6月
-
DeedleFake、「Go 2 デザインドラフトに関するフィードバック」、2018年8月
-
Loki Verloren、「Go 2 エラー処理フィードバックとプログラマの効率と経験を向上させる方法に関する私の考え」、2018年9月
-
Gima、「手続き型コード、エラー処理を分離」、2018年6月
-
Konstantin、「エラーツリーのエラー処理」、議論 2019年5月
フィードバックの追加
すべてのエントリは以下のようにフォーマットしてください。
- あなたの名前、「タイトル」、月 年
新しいフィードバックを見つけやすくするため、新しい提案は、それが配置されるセクションの最上部に追加してください。
このコンテンツはGo Wikiの一部です。