[go] Panic 함수와 defer 문의 관계
Go언어의 panic
함수와 defer
문은 예외 처리를 위한 중요한 기능을 제공합니다. 이 블로그 포스트에서는 이 두 기능이 서로 어떻게 상호작용하는지에 대해 다루겠습니다.
panic
함수
panic
함수는 현재 함수의 실행을 중단시키고 프로그램 전체에 대한 실행을 중단시키는데 사용됩니다. panic
함수는 예외가 발생했을 때 호출되며, 해당 함수의 실행이 중단되고 즉시 상위 호출자로 반환됩니다.
func doSomething() {
// ...
if err != nil {
panic("An error occurred")
}
// ...
}
defer
문
defer
문은 특정 함수 호출이 끝난 후에 실행되도록 보장하는데 사용됩니다. 이는 함수의 종료 시 정리 작업이나 리소스 해제 등을 수행하는 데 유용합니다.
func doSomething() {
defer cleanup()
// 함수 실행
}
panic
과 defer
의 관계
panic
과 defer
는 예외 처리와 관련하여 상호작용합니다. 예외가 발생하여 panic
이 호출될 때, 현재 함수 실행을 중단하기 전에 해당 함수 내에서 defer
로 지연시킨 작업들이 실행됩니다. 따라서, defer
는 panic
이 호출된 후에도 실행되는데, 이를 통해 프로그램에서 예외가 발생했을 때 정리 작업이나 리소스 해제 등을 위한 코드를 실행할 수 있습니다.
간단히 말하면, panic
함수와 defer
문은 함께 사용되어 예외 상황에서의 코드 안정성을 높이는 데에 도움을 줍니다.
참고문헌: