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,“不要对错误或 nil 进行特殊处理”,2018 年 9 月
-
Matt Dee,“错误处理应支持自定义错误类型”,2018 年 8 月
-
Ian Lance Taylor,“不完整的标准列表” 来自 GitHub 提议讨论,2018 年 5 月
-
Rob Pike(由 @matjam 发布),“简单是复杂的”,2015 年 12 月
支持
这包括在不进行更改的情况下支持现有的处理程序链/堆叠。
-
东京 Go 用户组,“来自 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 月
-
东京 Go 用户组,“来自 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 月
反复出现的主题
下面建议中反复出现的概念。
-
通过赋值调用处理程序,例如
v, ? := f()
参考:1,2,3,4,5,6,7,8,9,10,11,12,13,14 -
通过名称调用多个处理程序之一,例如
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,“使用函数作为 handle 参数”,2018 年 9 月
-
Savino Pio Liguori,“关于 Go2 错误处理设计的反馈”,2018 年 8 月
-
Jeffrey Koehler,“支持 Handle 链式调用;关于 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 错误响应:每个函数一个处理程序",2018 年 8 月
-
Eli Bendersky,"关于 Go 2 错误处理提案的想法",2018 年 9 月
-
Yoshiki Shibukawa,"每个处理程序都应该有返回值语句",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 月
-
阮昆良,"Go 2 的简单错误处理",2018 年 8 月
-
Martin Rode,"返回值的回归,Go 2 的错误处理",2018 年 11 月
带标签的错误处理程序
-
Joe Lapp,"仅限本地的抛出-捕获错误处理",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,"如何将检查和处理分开?",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 错误处理提案:作用域检查/处理",2018 年 8 月
-
Rust RFC,"基于特性的异常处理(其中
catch
类似于try
)",2016 年 2 月 -
胡志锋,"[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 的一部分。