6.3 panic & recover
6.3.1 런타임 에러와 패닉
실행 중에 에러가 발생하면(예를 들면 배열의 범위를 넘어서는 인덱스로 접근 또는 타입 어설션 실패 등) Go 런타임은 패닉을 발생시킨다. 패닉이 발생하면 패닉 에러 메시지가 출력되고 프로그램이 종료된다.
package main import "fmt" func main() { fmt.Println(divide(1, 0)) } func divide(a, b int) int { return a / b }
실행 결과
panic: runtime error: integer divide by zero
goroutine 1 [running]:
main.main()
/tmp/sandbox342187967/main.go:6 +0x140
goroutine 2 [runnable]:
runtime.forcegchelper()
/usr/src/go/src/runtime/proc.go:90
runtime.goexit()
/usr/src/go/src/runtime/asm_amd64p32.s:1086 +0x1
goroutine 3 [runnable]:
runtime.bgsweep()
/usr/src/go/src/runtime/mgc0.go:82
runtime.goexit()
/usr/src/go/src/runtime/asm_amd64p32.s:1086 +0x1
goroutine 4 [runnable]:
runtime.runfinq()
/usr/src/go/src/runtime/malloc.go:712
runtime.goexit()
/usr/src/go/src/runtime/asm_amd64p32.s:1086 +0x1