package main
import (
"fmt"
"os"
)
// 异常处理
//defer:延迟执行,并且即便程序出现严重错误,也会执行
//panic:主动抛出异常 raise
//recover:恢复程序,继续执行
//
//func main() {
//
// defer fmt.Println("我最后执行") //注册一下,并不执行,等main函数执行完了以后,从下往上执行defer定义的东西
// defer fmt.Println("我倒数第二个打印")
// fmt.Println("我先执行")
// //var a []int
// //fmt.Println(a[10])
// panic("我出错了")
// fmt.Println("ccccc")
//
// //假设打开一个文件
// //f:=open()
// //defer f.close()
// //
// //出错了
// //
//
//}
//
//func f1(){
// fmt.Println("f1 f1")
//}
//func f2(){
// defer func() { //这个匿名函数永远会执行
// //error:=recover() //恢复程序继续执行
// //fmt.Println(error) //如果没有错误,执行recover会返回nil 如果有错误,,执行recover会放错误信息
// if error:=recover();error!=nil{
// //表示出错了,打印一下错误信息,程序恢复了,继续执行
// fmt.Println(error)
// }
// // 相当于finally
// fmt.Println("我永远会执行,不管是否出错")
// }()
// fmt.Println("f2 f2")
// //panic("主动抛出错误")
//}
//func f3(){
// fmt.Println("f3 f3")
//}
//
//func main() {
// //捕获异常,处理异常,让程序继续运行
//
// f1()
//
// f2()
// f3()
//}
/*
try:
可能会错误的代码
except Exception as e:
print(e)
finally:
无论是否出错,都会执行
*/
/*现在这么写
defer func() {
if error:=recover();error!=nil{
//except的东西
fmt.Println(error)
}
//相当于finally,无论是否出错,都会执行
}()
可能会错误的代码
*/
// go的错误处理
func main() {
f, err := os.Open("/test.txt")
if err != nil {
fmt.Println(err)
return
}
if err != nil {
fmt.Println(err)
return
}
fmt.Println(f.Name(), "opened successfully")
}