第05天(异常、文本文件处理)_01

2020-01-14  本文已影响0人  lucas777

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()
}
上一篇 下一篇

猜你喜欢

热点阅读