더북(TheBook)

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

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.