|
|
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에서는 에러 가능성이 있는 곳에서 에러를 가리키는 반환값을 사용하는게 일반적입니다. |
다음 예제: 지연.