基础错误处理
本课属于 Coddy GO 学习旅程的“基础知识”单元。第 108 课,共 109 课。
基本错误处理是 Go 中的一种基础模式,你需要在可能失败的操作后检查错误。
我们来学习如何在 Go 中处理错误,方法是创建一个简单的除法函数,当除数为零时返回错误:
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}这个函数返回两个值:除法的结果和一个错误。如果除数为零,它会返回一条错误消息,而不是尝试进行除法。
现在,来看看如何使用这个函数并处理可能出现的错误:
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error occurred:", err)
return // 停止运行,或处理错误
}
fmt.Println("Result:", result)运行这段代码后,我们使用 if err != nil 条件检查是否发生了错误。由于我们尝试除以零,函数会返回一个错误,屏幕上会显示以下内容:
Error occurred: division by zero在 Go 中,把错误作为最后一个返回值返回,并立即检查它,是一种非常常见的模式。这样,你的程序就能妥善处理失败,而不是崩溃。
挑战
简单在这个挑战中,你将练习 Go 中的基本错误处理。你有一个用于计算两个数相除的函数,但除数为零会导致运行时错误。你的任务是添加错误处理,以防止程序崩溃。
代码中已经有一个同时返回结果和错误的函数。你需要在使用结果之前检查是否有错误。
亲手试试
package main
import (
"errors"
"fmt"
)
// 这个函数将 x 除以 y;如果 y 为零,就返回一个错误。
func divide(x, y float64) (float64, error) {
if y == 0 {
return 0, errors.New("cannot divide by zero")
}
return x / y, nil
}
func main() {
// 测试值
numerator := 10.0
denominator := 0.0
// 调用 divide 函数
result, err := divide(numerator, denominator)
// TODO: 检查 err 是否不为 nil(即是否有错误)
// 如果有错误,就用 fmt.Println(err) 打印出来。
// 否则,用 fmt.Printf("Result: %.2f\n", result) 打印结果。
// 删除这一行,并在上方实现正确的错误处理。
fmt.Printf("Result: %.2f\n", result)
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Go 在线编译器