在Python中,使用自己的“错误类型”引发异常(错误)的典型方法是
class noMoreBeer(Exception):
pass
try:
a_function()
except noMoreBeer as e:
print("there is no more beer ({e}), go buy some")
except Exception as e:
print(f"unexpected exception happened, namely {e}")
else:
print("thinks went fine")
我想移植到Go哲学的主要部分是,我创建了自己的例外,它可以有可选的解释文本,但我检查,而不是错误文本。noMoreBeer
现在回到Go,我阅读了几页关于如何处理错误的内容(虽然我首先很生气,但我现在发现它可以更好地编写代码),其中包括Go博客。为此,我试图复制上述内容,但下面的代码不起作用(JetBrain的Goland指向和return Error.noMoreBeer()if err == Error.noMoreBeer())
package main
import "fmt"
type Error interface {
error
noMoreBeer() bool
}
func thisFails() Error {
// returns my specific error, but could also percolate some other errors up
return Error.noMoreBeer()
}
func main() {
err := thisFails()
if err != nil {
if err == Error.noMoreBeer() {
fmt.Println("go buy some beer")
} else {
panic("something unexpected happened")
}
}
}
在 Go 中,有没有办法创建这样的特定错误?
在我的情况下,它们的主要驱动因素之一是我不依赖于错误中传递的文本,而是依赖于[类|无论什么],如果它有拼写错误,那将是一个错误。
达令说
婷婷同学_
猛跑小猪
哈士奇WWW
相关分类