error接口的使用:
package main
import (
"errors"
"fmt"
)
func main() {
var err1 error = fmt.Errorf("%s", "This is error1")
err2 := fmt.Errorf("%s", "this is error2")
fmt.Println("error = ", err1)
fmt.Println("error = ", err2)
// 一般情况下的使用方法
err3 := errors.New("This is error3")
}error接口的应用:
package main
import (
"errors"
"fmt"
)
func Demo(a, b int) (result int, err error) {
if b == 0 {
err = errors.New("The b can not be zero")
} else {
result = a / b
}
return
}
func main() {
result, err := Demo(12, 0)
if err != nil {
fmt.Println("error:", err)
} else {
fmt.Println("result = ", result)
}
}panic的使用:输出致命错误,程序中断
package main
import "fmt"
func Demo() {
fmt.Println("demo")
}
func Demo1() {
panic("程序中断")
fmt.Println("demo1")
}
func Demo2() {
fmt.Println("demo2")
}
func main() {
Demo()
Demo1()
Demo2()
}内部自动调用panic:
package main
import "fmt"
func Demo() {
fmt.Println("demo")
}
func Demo1(n int) {
var a [10]int
a[n] = 666 // 当n越界之后内部会自动调用panic函数
}
func Demo2() {
fmt.Println("demo2")
}
func main() {
Demo()
Demo1(12)
Demo2()
}recover:当程序有错误会中断,recover可以恢复中断的程序
package main
import "fmt"
func Demo() {
fmt.Println("demo")
}
func Demo1(n int) {
defer func() {
// recover 恢复中断的程序,有错误时就会输出错误信息
if err := recover(); err != nil {
fmt.Println(err)
}
}()
var a [10]int
a[n] = 666 // 当n越界之后内部会自动调用panic函数
}
func Demo2() {
fmt.Println("demo2")
}
func main() {
Demo()
Demo1(1)
Demo2()
}