go:panic

43 阅读2分钟

参考网址

haicoder.net/golang/gola…

前言

在 Go 语言中,如果我们的函数或者程序出现了非常严重的问题,遇到此类问题程序不应该继续往下运行了,那么我们就应该终止程序的执行。

在 Go 语言中,处理类似`致命`的错误的方法一般是通过 panic 的方式来终止我们程序的执行。

go语言panic详解

一般语法如下:
func funcName(param paramType)(returnVal1 returnType){
    if cond{
        panic("Error Info")
    }
}
说明:我们在定义的时候,使用if判断,如果满足if的条件,那么直接使用panic函数,终止程序的进行 。

案例1

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println("嗨客网(www.haicoder.net)")
    
    // panic终止程序的运行
    confFile := "cfg.conf"  // 配置文件
    
    // 检查配置文件是否存在,如果不存在,及err != nil
    if fileInfo, err := os.Stat(confFile); err != nil{
            panic("File not exist")
    } else {
            fmt.Println(fileInfo.Size())
    }
}

图片.png

我们在 main 函数里面,判断配置文件是否存在,如果配置文件不存在,则是通过 error 的方式返回,
那么我们就直接判断 error 是否为空,如果不为空,那么就直接使用 panic 终止程序的运行,否则继续处理程序接下来的逻辑。

因为,我们的文件不存在,因此运行后,程序输出了错误信息之后,直接退出了运行。

案例2

package main

import (
	"fmt"
)

func div(dividend, divisor int) int {
    // 判断除数为0的情况并返回
    if divisor == 0 {
       panic("divisor  is zero")
    }
    
    // 正常计算,返回空错误
    return dividend / divisor
}

func main() {
    fmt.Println("嗨客网(www.haicoder.net)")
    
    // 函数返回错误信息
    ret := div(2, 0)
    fmt.Println("Div ok, Ret =", ret)
}

图片.png

我们在 div 函数中在做真正的计算之前,首先使用 if语句判断,如果除数为 0,那么就直接使用 panic 终止程序的运行。

在 main() 函数,调用我们自定义的函数 div 时,我们的除数为0,程序输出了错误信息之后,直接退出了运行。

Go语言panic总结

在 Go 语言中,处理类似致命的错误的方法一般是通过 pannic 的方式来终止我们程序的执行。