Programming/Go

Go언어 예외처리(panic, recover) 편

KayEsQuo 2021. 2. 26. 14:22

Go언어에서의 예외처리 사용법은 다른언어들에서 볼 수 있는 tryCatch 구조와는 약간 다르다. 따라서 Go언어에서 이용할수 있는 예외처리 방법을 설명하고자 한다.

 

[panic함수 예제]

package main

import "fmt"

func main() {
	var a int = 1
	if a == 1 {
		panic("에러")
	}

	fmt.Println("hello world")
}

panic함수 사용법을 정리하면 다음과 같다.

1. panic함수 실행시 프로그램이 종료가 실행된다.

2. panic 실행이후 에러위치를 나타낸다.

 

 

[panic & recover 예제]

설명

var a의 값에 따라 예외처리를 알아보는 코드이다. 결과를 정리하면 다음과같다.

1. 에러(a가 1일때)

2. 성공(a가 1이 아닐때)

package main

import "fmt"

func main() {
	defer func() {
		s := recover()
		if s != nil {
			fmt.Println("error :", s) // 에러일때 nil 반환
		} else {
			fmt.Println("success") // 에러가 아닐때 nil 반환
		}
	}()

	var a int = 1 // 1 or 9999(실패 성공 판단여부)
	if a == 1 {
		panic("에러")
	}

	fmt.Println("hello world")
}

[성공 예시]

[에러 예시]