package main import( "fmt" "errors")func main() { num := 10 fmt.Printf("num的类型%T, num的值%v, num的地址%v\n", num, num, &num) num2 := new(int) //返回一个指针 //num2的类型*int, num2的值0xc04200e0b8, num2的地址0xc042004030, num2指向的值0 fmt.Printf("num2的类型%T, num2的值%v, num2的地址%v, num2指向的值%v\n", num2, num2, &num2, *num2) //捕获异常 testCatch() fmt.Println("我还会执行") //自定义错误 panic testPanic() fmt.Println("我是panic后续代码");}func testCatch() { //使用defaer+recover捕获异常 defer func(){ err := recover() //一个内置函数,能捕获异常 if nil != err { fmt.Println("err=", err) } }() n1 := 10 n2 := 0 n3 := n1 / n2 //发生异常 fmt.Println("catch.....", n3);}func readConf(name string) (err error) { if "config.ini" == name { return nil } else { return errors.New("发生错误") }}func testPanic() { err := readConf("config2.ini") if nil != err { panic(err) //如果有错误,这里抛出错误且终止后续程序的执行 } fmt.Println("I am ok 继续执行")}