You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.5 KiB
1.5 KiB
golang 没有采取try-catch
机制,在golang中不存在异常的说法。而错误被分为三类:
- error 部分流程出错,需要处理
- panic 很严重的问题,程序应该在处理完问题后立即退出
- fatal 非常致命的问题,程序应该立即退出
error
打开一个名为README.txt
的文件,如果打开失败函数将会返回一个错误,输出错误信息,如果错误为空的话那么就是打开成功,输出文件名。这样看起来似乎是要比try-catch
简洁一些,那如果有特别多的函数调用,将会到处都充斥着if err != nil
这种判断语句,外界对于Go主要诟病的点几乎都在错误处理上了,说到底并没有比try-catch
好到哪里去
func main() {
// 打开一个文件
if file, err := os.Open("README.txt"); err != nil {
fmt.Println(err)
} else {
fmt.Println(file.Name())
}
}
error属于是一种正常的流程错误,它的出现是可以被接受的,大多数情况下应该对其进行处理,当然也可以忽略不管,error的严重级别不足以停止整个程序的运行。error
本身是一个预定义的接口,该接口下只有一个方法Error()
,该方法的返回值是字符串,用于输出错误信息
type error interface {
Error() string
}
1.error的创建
//第一种
err := errors.New("这是一个错误")
//第二种
err := fmt.Errorf("这是%d个格式化参数的的错误", 1)