在执行程序时,遇到系统错误或是网路异常是无可避免的,这时我们可能印出错误讯息并且让程序中断。
当然也不只系统上的错误,有时会有参数带入的错误,也必须印出错误讯息,
这篇我们要介绍 Go 语言错误处理的机制。
在 Go 语言中,将错误定义成一个 interface,而内建的 error interface 如下:
error interface {
Error() string
}
在许多套件中的 function,都会再回传值中,带一个 error 回传,例如 strconv.Atoi,我们看一下这个 function 的组成:
func strconv.Atoi(s string) (int, error)
那直接来看如何运用这个 error 回传值:
package main
import (
"fmt"
"strconv"
)
func main() {
i, err := strconv.Atoi("0.5")
if err != nil {
fmt.Println("couldn't convert number:", err)
return
}
fmt.Println("Converted integer:", i)
}
先来讲解 strconv.Atoi 的用途,我们带入一个字串,但必须是整数字串,听起来有点绕舌,举个例子,例如 "1",将其带入会输出整数1,以及error,当然如果没有错误,当然就是回传空值。
那以上面的例子,err 这个变数不为空值,这时你试着只印出 err,会是 invalid syntax ,恩...翻译成"无效的语法",如果在一个较大的专案,哪会知道错误发生在哪段,所以尽可能印出更详细的资讯,才比较能够追踪错误,
有时不见得是参数带错,而是程序和需求相左,所以这样如此一来也方便你 debug。
今天介绍简单的错误语法运用,明天将会带来更实务上的运用,有关 defer 、 panic 、 recover 的使用。感谢各位读者今天的阅!
<<: 简报版-第四章-认识弱密码,不只123456、1234qwer
前言 今天接着完成翻译任务实作的第二阶段-模型推论。 翻译器建立实作 重新评估翻译模型 上次由於输入...
1.宣告a 赋值 null var a = null 赋值:数字、"字串"、nu...
工具介绍 今天要介绍的是unix-privesc-check,它是一个在 Unix 系统上运行的脚本...
今天学习进度还是 鸟哥的 Linux 私房菜 -- DNS Server /etc/nsswitch...
Hello World 的起源 通常我们在测试一个程序或是一个环境是否正常 会习惯使用 Hello ...