Go 的 'throws' 子句是什么?

What is Go's equivalent to 'throws' clause?

我正在学习Go programming language. I just read about the way of error handling in Go。有一个很好的解释,但我对此有些困惑。 在 Go 中处理错误的典型方法只是 returning 错误作为函数的第二个值:

f, err := Sqrt(-1)
if err != nil {
    fmt.Println(err)
}

很简单。但是假设我是一个库开发人员,我可能想知道我的函数可能会抛出一些错误,而客户端必须处理它。

在 Java 中,我有 throws 子句。所以,客户必须把它放在那些try...catch

在 Go 中,我可以 return 函数出错;但是假设如果图书馆的客户避免处理它那么我该如何优雅地告诉他处理它?

编辑: 我只是在探索一种语言。不要试图将 java 的思想与 Go 混在一起,并尊重每个人的做事哲学。刚问是因为我还没有学好Go,想知道有没有关键字

这就是 Go 的哲学:如果开发人员发现函数 returns 有错误,那么他有责任检查错误。编程语言不会强迫你去做。

Rob Pike 的理由是错误并不特殊,因此不需要专门的语言结构(即 try/catch)来处理它们。

您的库还应该通过其公开的函数将错误传回。您会注意到 std 库中的许多方法都有一个 return 值和一个错误,因此人们应该习惯于处理错误。

如果你真的想要出现类似于 java 的行为,你可以使用 panic(),但在 golang 中注意 panic 应该只用于不可恢复的错误,或程序员错误(不是运行时错误,可以从中恢复)

无论哪种方式,您都不能强迫客户来处理它。这是他们的责任。