>  기사  >  백엔드 개발  >  Golang 예외 처리의 패닉 및 복구

Golang 예외 처리의 패닉 및 복구

WBOY
WBOY원래의
2024-04-15 18:15:02328검색

Go에서는 예외처리를 위해 Panic, Recover를 사용합니다. 패닉은 예외를 보고하는 데 사용되고 복구는 예외에서 복구하는 데 사용됩니다. 패닉은 프로그램 실행을 중지하고 인터페이스{} 유형의 예외 값을 발생시킵니다. Recover는 지연된 함수나 고루틴에서 예외를 포착하여 발생하는 인터페이스 유형의 예외 값을 반환할 수 있습니다.{}

Golang 예외 처리의 패닉 및 복구

Go 언어 예외 처리의 패닉 및 복구

Go 언어에서 panicrecover 키워드는 예외 처리를 위한 중요한 메커니즘입니다. panic은 예외를 보고하는 데 사용되고 recover는 예외에서 복구하는 데 사용됩니다. panicrecover 关键字是异常处理的重要机制。panic 用于报告异常,而 recover 用于从异常中恢复。

Panic

panic 关键字用于报告一个异常条件,它会立即停止程序执行,并打印堆栈信息。使用 panic 时,程序会抛出一个 interface{} 类型的异常值。例如:

package main

func main() {
    panic("发生了异常")
}

Recover

recover 关键字用于从 panic 中恢复。它可以从当前 goroutine 返回一个 interface{} 类型的异常值。recover 只能在延迟函数或 goroutine 中使用。例如:

package main

import "fmt"

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("捕获到异常:", r)
        }
    }()
    panic("发生了异常")
}

实战案例

假设我们有一个函数 divide,它计算两个数的商:

func divide(a, b int) float64 {
    if b == 0 {
        panic("除数不能为零")
    }
    return float64(a) / float64(b)
}

为了处理 divide 函数中可能发生的异常,我们可以使用 recover

Panic

🎜🎜 panic 키워드는 프로그램 실행을 즉시 중지하고 스택 정보를 인쇄하는 예외 조건을 보고하는 데 사용됩니다. 패닉을 사용할 때 프로그램은 인터페이스{} 유형의 예외 값을 발생시킵니다. 예: 🎜
func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("捕获到异常:", r)
        }
    }()

    fmt.Println(divide(10, 2))
    fmt.Println(divide(10, 0))
}
🎜🎜Recover🎜🎜🎜recover 키워드는 패닉에서 복구하는 데 사용됩니다. 현재 고루틴에서 인터페이스{} 유형의 예외 값을 반환할 수 있습니다. 복구는 지연된 함수나 고루틴 내에서만 사용할 수 있습니다. 예: 🎜
5
捕获到异常: 除数不能为零
🎜🎜실용 사례🎜🎜🎜두 숫자의 몫을 계산하는 divide 함수가 있다고 가정해 보겠습니다. 🎜rrreee🎜 divide 기능 예외의 경우 <code>recover를 사용할 수 있습니다. 키워드: 🎜rrreee🎜출력: 🎜rrreee

위 내용은 Golang 예외 처리의 패닉 및 복구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.