Panic
Panic
Goμμ panicμ μκΈ°μΉ μμ μ€λ₯κ° λ°μν λ νλ‘κ·Έλ¨μ μ€νμ μ€μ§νλλ° μ¬μ©ν μ μλ λ΄μ₯ ν¨μμ΄λ€.
νλ‘κ·Έλ¨ μ€ν μ€ μ΄λ μμ μμλ μ¦μ μ€μ§μν¬μ μμ κ²μ΄λ€.
λλΆλΆμ κ²½μ°μ panicμ μ¬μ©νλ μ΄μ λ λλ²κ·Έ μ©λ, μ€λν κ²°ν¨μ΄ μλ κ²½μ°, νλ‘κ·Έλ¨ μ€ν μ€(bootstrap) μ€λ₯μ κ°λ€.
μ€λν κ²°ν¨μ΄λ λ€νΈμν¬ μ€λ₯ λ±μ΄ μλ κ²½μ°μλ νλ‘κ·Έλ¨μ μμ νκ² μ§μνλ κ² μμ²΄κ° λΆκ°λ₯νλ―λ‘ panic μνλ‘ νλ‘κ·Έλ¨μ μ’ λ£νλ κ²μ΄ λμ μ μλ€.
Simple example
panicμ μ¬μ©νλ κ°λ¨ν μμλ λ€μκ³Ό κ°λ€. 0μΌλ‘ λλλ κ²½μ°μ panicμ μΌμΌν¨λ€.
λ°λΌμ λ€μ fmt.Printlnμ μ μ€νλμ§ μμ κ²μ΄λ€.
package main
import "fmt"
func divide(a, b int) int {
if b == 0 {
panic("divide by zero")
}
return a / b
}
func main() {
fmt.Println("Divide 1 by 0", divide(1, 0))
fmt.Println("This line will never be printed")
}Recover
goμμλ panic μ΄ νΈλ¦¬κ±°λ μν©μμ recover() ν¨μλ₯Ό μ¬μ©νλ©΄ ν¨λμ μ€μ§νκ³ νλ‘κ·Έλ¨μ λ€μ μ μ μ€νν μκ° μλ€.
go λ°νμμ panicμ deferred function(μ€νμ μμΈ μ§μ°ν¨μ)λ₯Ό μ€ννκΈ° μμνλλ°, λ³΄ν΅ λ€μκ³Ό κ°μ΄ μ¬μ©νλ€.
Last updated