01_error接口的使用.go
package main
import "fmt"
import "errors"
func main() {
//var err1 error = fmt.Errorf("%s", "this is normol err")
err1 := fmt.Errorf("%s", "this is normal err1")
fmt.Println("err1 = ", err1)
err2 := errors.New("this is normal err2")
fmt.Println("err2 = ", err2)
}
02_error接口应用.go
package main
import "fmt"
import "errors"
func MyDiv(a, b int) (result int, err error) {
err = nil
if b == 0 {
err = errors.New("分母不能为0")
} else {
result = a / b
}
return
}
func main() {
result, err := MyDiv(10, 0)
if err != nil {
fmt.Println("err = ", err)
} else {
fmt.Println("reslut = ", result)
}
}
03_显式调用panic函数.go
package main
import "fmt"
func testa() {
fmt.Println("aaaaaaaaaaaaaaaaa")
}
func testb() {
//fmt.Println("bbbbbbbbbbbbbbbbbbbb")
//显式调用panic函数,导致程序中断
panic("this is a panic test")
}
func testc() {
fmt.Println("cccccccccccccccccc")
}
func main() {
testa()
testb()
testc()
}
04_数组越界到导致panic.go
package main
import "fmt"
func testa() {
fmt.Println("aaaaaaaaaaaaaaaaa")
}
func testb(x int) {
var a [10]int
a[x] = 111 //当x为20时候,导致数组越界,产生一个panic,导致程序崩溃
}
func testc() {
fmt.Println("cccccccccccccccccc")
}
func main() {
testa()
testb(20)
testc()
}
05_recover的使用.go
package main
import "fmt"
func testa() {
fmt.Println("aaaaaaaaaaaaaaaaa")
}
func testb(x int) {
//设置recover
defer func() {
//recover() //可以打印panic的错误信息
//fmt.Println(recover())
if err := recover(); err != nil { //产生了panic异常
fmt.Println(err)
}
}() //别忘了(), 调用此匿名函数
var a [10]int
a[x] = 111 //当x为20时候,导致数组越界,产生一个panic,导致程序崩溃
}
func testc() {
fmt.Println("cccccccccccccccccc")
}
func main() {
testa()
testb(20)
testc()
}
网友评论