Panic

Panic->패닉 #

// `panic`은 일반적으로 무언가가 예상치 못하게 잘못되었음을 의미합니다.
//   대부분 정상적인 작동 중에는 발생해선 안되는 오류 또는 정상적으로 처리할 준비가 되어있지 않은 오류에 대해 빠르게 실패시키는데 사용합니다.

package main

import "os"

func main() {

	// 예상치 못한 에러를 체크하기 위해 사이트 전체에서 패닉을 사용합니다.
	//  이는 사이트에서 패닉을 하기 위해 설계된 유일한 프로그램입니다.
	panic("a problem")

	// 패닉의 일반적인 사용은 어떤 함수가 어떻게 처리할지 모르는 (또는 하고 싶지 않은) 에러값을 반환했을때 중단을 하기 위함입니다.
	//  다음은 파일을 생성할 때 예상치 못한 에러가 발생할 경우 패니킹(panicking)을 하는 예시입니다.
	_, err := os.Create("/tmp/file")
	if err != nil {
		panic(err)
	}
}
# 프로그램을 실행하면 패닉을 일으키며, 에러 메시지와 고루틴 트레이스 정보, 그리고 0이 아닌 상태값과 함께 종료됩니다.
$ go run panic.go
panic: a problem

goroutine 1 [running]:
main.main()
	/.../panic.go:12 +0x47
...
exit status 2

# 참고로 에러를 핸들링 하기 위해 익셉션을 사용하는 타 언어와는 달리, Go에서는 에러 가능성이 있는 곳에서 에러를 가리키는 반환값을 사용하는게 일반적입니다.