Go에서는 예외처리를 위해 Panic, Recover를 사용합니다. 패닉은 예외를 보고하는 데 사용되고 복구는 예외에서 복구하는 데 사용됩니다. 패닉은 프로그램 실행을 중지하고 인터페이스{} 유형의 예외 값을 발생시킵니다. Recover는 지연된 함수나 고루틴에서 예외를 포착하여 발생하는 인터페이스 유형의 예외 값을 반환할 수 있습니다.{}
Go 언어 예외 처리의 패닉 및 복구
Go 언어에서 panic
및 recover
키워드는 예외 처리를 위한 중요한 메커니즘입니다. panic
은 예외를 보고하는 데 사용되고 recover
는 예외에서 복구하는 데 사용됩니다. panic
和 recover
关键字是异常处理的重要机制。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
키워드는 패닉
에서 복구하는 데 사용됩니다. 현재 고루틴에서 인터페이스{}
유형의 예외 값을 반환할 수 있습니다. 복구는 지연된 함수나 고루틴 내에서만 사용할 수 있습니다. 예: 🎜5 捕获到异常: 除数不能为零
divide
함수가 있다고 가정해 보겠습니다. 🎜rrreee🎜 divide 기능 예외의 경우 <code>recover
를 사용할 수 있습니다. 키워드: 🎜rrreee🎜출력: 🎜rrreee위 내용은 Golang 예외 처리의 패닉 및 복구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!