Go Wiki: Go2ErrorHandlingFeedback
關於 Go 2 錯誤處理草案設計的反饋
此頁面旨在收集和整理有關 Go 2 錯誤處理草案設計的反饋和討論。
請在您的部落格、Medium、GitHub Gists、郵件列表、Google Docs 等地方釋出您的反饋。然後請在此處連結。
請幫助對底部未分類的提案進行分類。
更新,2019 年 6 月 19 日 – 基於這些反饋,我們釋出了 關於 try 內建函式的提案,該提案在 #32437 上產生了大量反饋(此處為串聯檢視)。
我們已停用該議題的評論,直到 7 月 1 日,以便大家有時間在自己的程式碼中進行試驗。我們非常希望看到關於在您自己的程式碼中使用通用 try 方法的經驗報告,包括使用 tryhard 進行的試用轉換。謝謝!
關於 “try 提案” 的經驗
新增到此列表
- 模板:您的姓名,“標題”,YYYY 年 MM 月
要求
關於新錯誤處理方法要求的討論。
-
Warren Stephens,“Go 2 的
handle應提供行號、原始檔名、版本”,2018 年 12 月 -
Liam Breck,“Go 2 錯誤處理需要考慮的要求”,2018 年 9 月
-
jimmyfrasche,“不要特殊處理 error 或 nil”,2018 年 9 月
-
Matt Dee,“錯誤處理應支援自定義錯誤型別”,2018 年 8 月
-
Ian Lance Taylor,“不完整的標準列表” 來自 GitHub 提案討論,2018 年 5 月
-
Rob Pike(由 @matjam 釋出)“簡單即是複雜”,2015 年 12 月
支援
這包括支援現有的 handler 鏈/堆疊,無任何改動。
-
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 月
-
Anonymous,“Go 2 錯誤處理非提案”,2018 年 10 月
-
Stripe developers,“關於 Go 2 草案設計的反饋”,2018 年 10 月
-
Tokyo Gophers,“Go 2 反饋活動中的反對意見”,2018 年 10 月
-
Liam Breck,“Golang,你怎敢處理我的檢查!”,2018 年 9 月
-
Nate Finch,“Handle 和 Check,算了吧”,2018 年 9 月
-
Jozef Slezak,“使用分號而不是新關鍵字:check+handle”,2018 年 9 月
-
Shannon Wynter,“錯誤處理的已有實現方式”,2018 年 8 月
重複的主題
在以下建議中反覆出現的概念。
-
透過賦值呼叫 handler,例如
v, ? := f()
參考:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 -
按名稱呼叫多個 handler 中的一個,例如
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 錯誤處理方案,沒有 handler] (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 引數,自定義 handle”,2018 年 9 月
-
Viktor Kojouharov,“減少新錯誤設計草案周圍的特殊處理”,2018 年 9 月
-
Aleksei Pavliukov,“使用函式作為 handle 引數”,2018 年 9 月
-
Savino Pio Liguori,“Go2 錯誤處理設計的反饋”,2018 年 8 月
-
Jeffrey Koehler,“支援 Handler 鏈;關於 Check”,2018 年 8 月
-
Garrus,“另一種錯誤處理的語法糖風格”,2018 年 8 月
-
Paul Borman,“反對 Go 2 錯誤處理提案的論點”,2018 年 8 月
-
krhubert,“用於測試的錯誤預設 handler”,2019 年 5 月
-
Franz, 實現錯誤處理,就像一個變數的不變數檢查。當值改變時,會呼叫一個函式。這也可以用於其他情況。
-
Brandon Heenan,“簡潔,具有更明顯的控制流”,2021 年 5 月
移除 handler 鏈
-
Markus Heukelom,“提案:使用
guard和must關鍵字改進錯誤處理”,2019 年 4 月 -
Alessandro Arzilli,“反對 check 作為運算子和 handler 鏈”,2018 年 8 月
-
Simon Howard,“Go 2 錯誤響應:每個函式一個 Handler”,2018 年 8 月
-
Eli Bendersky,“關於 Go 2 錯誤處理提案的思考”,2018 年 9 月
-
Yoshiki Shibukawa,“每個 handler 都應有一個 return 語句”,2018 年 9 月
反提案
使用普通函式的錯誤處理
-
Azamat Kalberdiev,“使用直觀的程式碼處理每個錯誤”,2021 年 3 月
-
Andrew Phillips,“使用閉包而不是 handler”,2018 年 10 月
-
Taihei Morikuni,“使用函式作為錯誤 handler,新增語法糖以消除重複的 if 語句”,2018 年 9 月
-
Scott Pakin,“基於非區域性返回的 Go 2 錯誤處理”,2018 年 9 月
-
Greg Weber,“使用函式和 error 返回值進行錯誤處理?”,2018 年 9 月。最初連結的 gist。
-
Gigi Sayfan,“Go 2 錯誤處理反饋 + 替代方案”,2018 年 9 月
-
Ruan Kunliang,“Go 2 的簡單錯誤處理”,2018 年 8 月
-
Martin Rode,“返回的迴歸,Go 2 的錯誤處理”,2018 年 11 月
帶標籤的錯誤 handler
-
Joe Lapp,“僅限本地的 throw-catch 錯誤處理”,2021 年 10 月
-
Danijel Premus,“使用現有的 go 標籤”,2018 年 12 月
-
Burak Serdar,“err 的 handler 同時宣告 err 和 errHandler,減少侵入性的帶標籤錯誤處理”,2018 年 10 月
-
John Forstmeier,“帶標籤的錯誤處理”,2018 年 9 月
-
Mikaël Cluseau,“多個 handler,明確哪個返回值被使用”,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’ 返回 error 而不是允許自定義邏輯”,2018 年 8 月
-
Night-walker 和 daokoder,“擴充套件和重新利用 defer 而不是引入新語法”,2014 年 6 月
try/catch/finally 語法
-
Mathieu Devos,“Go2 錯誤處理提案:作用域 Check/Handle”,2018 年 8 月
-
Rust RFC,“基於 Trait 的異常處理(其中
catch類似於try)”,2016 年 2 月 -
ZhiFeng Hu,“[Go2ErrorHandling] Go 應支援異常處理程式”,2018 年 8 月
-
Jan Semmelink,“if-else-undo-done”,2018 年 8 月
-
Vladimir Utoplov,“處理 throws/throw 慣用法”,2018 年 9 月
-
Gokan EKINCI,“try-with-resources”,2018 年 12 月
其他可能性
-
Alex Hornbake,“refuse. 條件返回關鍵字”,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 月
新增您的反饋
請將所有條目格式化如下。
- 您的姓名,“標題”,月 年
為了更容易檢視新的反饋,請將您的新提案新增到其所在部分的頂部。
此內容是 Go Wiki 的一部分。