Kru*_*hah 3 java exception-handling exception go throws
我只是在学习Go编程语言.我刚刚读到了Go中错误处理的方式.有一个很好的解释,但我有一些混乱.在Go中处理错误的典型方法是将错误作为函数的第二个值返回:
f, err := Sqrt(-1)
if err != nil {
fmt.Println(err)
}
Run Code Online (Sandbox Code Playgroud)
非常简单.但是,假设我是一名图书馆开发人员,我可能想知道客户端我的函数可能会抛出一些错误,而客户端必须处理它.
在Java中,我有throws条款.因此,客户必须将它放在这些try...catch块中
在Go中,我可以从函数返回错误; 但是,如果图书馆的客户避免处理它,那么我该如何优雅地告诉他处理它?
编辑: 我只是在探索一种语言.不要试图将Java的思维与Go混合,尊重每个人的理念.我刚问过,因为我想知道是否有任何关键字,因为我还没有学到Go.
这就是Go的理念:如果开发人员发现函数返回错误,那么他就有责任检查错误.编程语言不会强迫你这样做.
Rob Pike背后的推理是错误不是特殊的,因此,不需要专门的语言构造(即try/catch)来处理它们.
您的库也应该通过其公开的函数传递错误.您会注意到std库中的许多方法都有返回值和错误,因此人们应该习惯于处理错误.
如果你真的想要有类似于java的行为你可以使用panic(),但golang恐慌中的注意事项应仅用于不可恢复的错误或程序员错误(不是可以从中恢复的运行时错误)
无论哪种方式,您都无法强制客户端处理它.这是他们的责任.
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |