🌺每天不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点,以及职场小菜鸡的生活。🌺
💗点关注不迷路,总有一些📖知识点📖是你想要的💗
目录
Golang有两种错误处理机制,分别是error和panic。
error一般是程序员可预知的,在意料之中的错误,会进行合适的处理,如打开件失败、检测输入是否合法等。而panic是不应该出现问题的地方出现了问题,程序员无法预知的异常,例如空指针或数组越界等。
Error
Eoor是通过返回值的形式来出来,要么忽略错误,要么处理错误,一般我们会在发生错误时,种植程序,返回error给调用者并且记录错误日志,对于golang这种设计方式,我们会在代码中写大量的if判断,以便做出决定。
对于err如果是nil就代表没有错误,如果不是nil就代表程序出问题了,需要对错误进行处理了。
errors.New和fmt.Errorf
func main() {
fmt.Println(errors.New("错误"))
fmt.Println(fmt.Errorf("错误"))
}
Panic
Panic是程序员无法预知的,如果没有提前设置解决方案,一旦出现,将直接导致程序崩溃。Go的类型系统会在编译时捕获很多错误,但有些错误,如数组访问越界、空指针引用等只能在运行时检查。这些运行时错误会引起painc异常。
try catch finally
recoverGogoroutine
func dopanic() {
err := recover()
if err!=nil {
fmt.Println("panic")
}
}
func main() {
defer dopanic()
n := 0
res := 1 / n
fmt.Println(res)
}
其他
panic()
参考: