투케이2K

36. (Go Lang) [Mac Os] Go 문법 : defer 및 recover 함수 사용해 에러 발생 예외 처리 - try catch 대체 본문

Go Lang (Go 언어)

36. (Go Lang) [Mac Os] Go 문법 : defer 및 recover 함수 사용해 에러 발생 예외 처리 - try catch 대체

투케이2K 2024. 2. 19. 20:14

[개발 환경 설정]

개발 언어 : Go

 

[소스 코드]

package main

import "fmt"

func main() {

	// ---------------------------------------------------
	// [기본 설명]
	// ---------------------------------------------------
	// Go에서 defer 키워드는 특정 문장 혹은 함수를 나중에 (defer를 호출하는 함수가 리턴하기 직전에) 실행 합니다
	// ---------------------------------------------------
	// defer는 C#, Java 같은 언어에서의 finally 블럭처럼 마지막에 Clean-up 작업을 위해 사용 됩니다
	// ---------------------------------------------------
	// Go에서는 java , js 와는 다르게 별도의 try catch 구문이 없어 defer 및 recover 함수 사용를 사용해 에러 발생 예외 처리를 수행합니다
	// ---------------------------------------------------

	// [변수 선언 및 메소드 호출]
	data := divide(1, 0)

	// [로그 출력 수행]
	fmt.Println("")
	fmt.Println("----------------------------------------------")
	fmt.Println("[로그 출력 수행]")
	fmt.Println("----------------------------------------------")
	fmt.Println("data : ", data)
	fmt.Println("----------------------------------------------")
	fmt.Println("")
}

// [에러 구문 처리 함수 정의 : 0 나누기 >> 에러]
func divide(a, b int) int {
	defer func() {
		if err := recover(); err != nil {
			fmt.Println("")
			fmt.Println("----------------------------------------------")
			fmt.Println("[Error 에러 발생]")
			fmt.Println("----------------------------------------------")
			fmt.Println(err)
			fmt.Println("----------------------------------------------")
			fmt.Println("")
		}
	}()

	return a / b
}
 

[결과 출력]


반응형
Comments