Scroll Top

GOLANG – 예외처리

GO

golang 에서는 기본적으로 오류가 발생하면 panic() 함수가 호출된다. 그러면 실행중인 함수에서 멈추고 종료된다. 이 때 recover() 함수를 사용하면 panic 상태를 다시 정상으로 롤백하며 실행된다.

package main

import "fmt"

func test() int {
        arr := [] int {}
        defer func() {
                v := recover()
                fmt.Println("recovered:", v)
        }()

        x := arr[5]
        return x
        }

func main() {
        result := test()
        fmt.Printf("smooth exit %d", result)
}
┌──(daleji㉿DESKTOP)-[~]
└─$ go run error.go
recovered: runtime error: index out of range [5] with length 0
smooth exit 0

위의 코드를 보면 main 에서 test 함수를 호출하게 된다. test 함수 안에 defer 이라는 함수가 있는데 이 함수는 프로그램의 가장 마지막에 실행하게 해 준다.
이 함수를 사용하지 않을 경우 순서대로 실행되기에 panic 이 호출되고 recover 없이 프로그램이 종료된다.

또한 함수를 만들 때 리턴값에 에러 값도 추가하는 것이 관례라고 한다.

Leave a comment

You must be logged in to post a comment.