[go] Panic 함수와 defer 문의 관계

Go언어의 panic 함수와 defer 문은 예외 처리를 위한 중요한 기능을 제공합니다. 이 블로그 포스트에서는 이 두 기능이 서로 어떻게 상호작용하는지에 대해 다루겠습니다.

panic 함수

panic 함수는 현재 함수의 실행을 중단시키고 프로그램 전체에 대한 실행을 중단시키는데 사용됩니다. panic 함수는 예외가 발생했을 때 호출되며, 해당 함수의 실행이 중단되고 즉시 상위 호출자로 반환됩니다.

func doSomething() {
    // ...
    if err != nil {
        panic("An error occurred")
    }
    // ...
}

defer

defer 문은 특정 함수 호출이 끝난 후에 실행되도록 보장하는데 사용됩니다. 이는 함수의 종료 시 정리 작업이나 리소스 해제 등을 수행하는 데 유용합니다.

func doSomething() {
    defer cleanup()
    // 함수 실행
}

panicdefer의 관계

panicdefer는 예외 처리와 관련하여 상호작용합니다. 예외가 발생하여 panic이 호출될 때, 현재 함수 실행을 중단하기 전에 해당 함수 내에서 defer로 지연시킨 작업들이 실행됩니다. 따라서, deferpanic이 호출된 후에도 실행되는데, 이를 통해 프로그램에서 예외가 발생했을 때 정리 작업이나 리소스 해제 등을 위한 코드를 실행할 수 있습니다.

간단히 말하면, panic 함수와 defer 문은 함께 사용되어 예외 상황에서의 코드 안정성을 높이는 데에 도움을 줍니다.

참고문헌: