Golang 如何创建自定义错误
Golang为我们提供了不同的方法,我们可以用它来打印自定义错误。在这篇文章中,我们将探讨两种这样的方法。
第一种方法要求我们使用 error.New() 函数,它将创建一个新的错误,我们甚至可以在其中传递一个我们选择的字符串作为参数。
例子1
考虑一下下面的代码。
package main
import (
"errors"
"fmt"
"math"
)
func areaOfCircle(radius float64) (float64, error) {
if radius < 0 {
return 0, errors.New("Area calculation wrong, the radius is < zero")
}
return math.Pi * radius * radius, nil
}
func main() {
radius := -10.0
area, err := areaOfCircle(radius)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("Area of circle %0.2f", area)
}
在上面的代码中,我们试图找到圆的面积,但我们把半径传递为负数,这将返回我们在 areaOfCircle 函数中创建的错误。
输出
如果我们在上面的代码中运行命令 go run main.go ,我们将在终端得到以下输出。
Area calculation wrong, the radius is < zero
例2
另一种方法是利用 fmt.Errorf() ,在它的帮助下我们也可以传递格式化的值。
请看下面的代码。
package main
import (
"fmt"
"math"
)
func areaOfCircle(radius float64) (float64, error) {
if radius < 0 {
return 0, fmt.Errorf("Area calculation wrong, the radius %0.2f is < zero", radius)
}
return math.Pi * radius * radius, nil
}
func main() {
radius := -10.0
area, err := areaOfCircle(radius)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("Area of circle %0.2f", area)
}
输出
如果我们在上述代码上运行命令 go run main.go ,我们将在终端得到以下输出。
Area calculation wrong, the radius -10.00 is < zero
极客教程