Goμμ panicμ μκΈ°μΉ μμ μ€λ₯κ° λ°μν λ νλ‘κ·Έλ¨μ μ€νμ μ€μ§νλλ° μ¬μ©ν μ μλ λ΄μ₯ ν¨μμ΄λ€.
νλ‘κ·Έλ¨ μ€ν μ€ μ΄λ μμ μμλ μ¦μ μ€μ§μν¬μ μμ κ²μ΄λ€.
λλΆλΆμ κ²½μ°μ panicμ μ¬μ©νλ μ΄μ λ λλ²κ·Έ μ©λ, μ€λν κ²°ν¨μ΄ μλ κ²½μ°, νλ‘κ·Έλ¨ μ€ν μ€(bootstrap) μ€λ₯μ κ°λ€.
μ€λν κ²°ν¨μ΄λ λ€νΈμν¬ μ€λ₯ λ±μ΄ μλ κ²½μ°μλ νλ‘κ·Έλ¨μ μμ νκ² μ§μνλ κ² μμ²΄κ° λΆκ°λ₯νλ―λ‘ panic μνλ‘ νλ‘κ·Έλ¨μ μ’
λ£νλ κ²μ΄ λμ μ μλ€.
panicμ μ¬μ©νλ κ°λ¨ν μμλ λ€μκ³Ό κ°λ€. 0μΌλ‘ λλλ κ²½μ°μ panicμ μΌμΌν¨λ€.
λ°λΌμ λ€μ fmt.Printlnμ μ μ€νλμ§ μμ κ²μ΄λ€.
Copy 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 " )
} goμμλ panic μ΄ νΈλ¦¬κ±°λ μν©μμ recover() ν¨μλ₯Ό μ¬μ©νλ©΄ ν¨λμ μ€μ§νκ³ νλ‘κ·Έλ¨μ λ€μ μ μ μ€νν μκ° μλ€.
go λ°νμμ panicμ deferred function(μ€νμ μμΈ μ§μ°ν¨μ)λ₯Ό μ€ννκΈ° μμνλλ°, λ³΄ν΅ λ€μκ³Ό κ°μ΄ μ¬μ©νλ€.