Golang 예외 처리의 패닉 및 복구

WBOY
풀어 주다: 2024-04-15 18:15:02
원래의
304명이 탐색했습니다.

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 기능 예외의 경우 recover를 사용할 수 있습니다. 키워드: rrreee출력: rrreee

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!