반응형

Golang 에러 처리, 에러 생성, 예외 처리

 

1. 에러 처리

package main

 

import (

          "fmt"

)

 

func divide(a, b float64) (float64, error) {

          if b == 0 {

                    return 0, fmt.Errorf("0으로 나눌 수 없습니다")

          }

          return a / b, nil

}

 

func main() {  

          result, err := divide(10, 2) // divide 함수 호출

          if err != nil {

                    fmt.Println("에러 발생:", err)

          } else {

                    fmt.Println("결과:", result)

          }

         

          result, err = divide(10, 0) // 에러가 발생하지 않는 경우

          if err != nil {

                    fmt.Println("에러 발생:", err)

          } else {

                    fmt.Println("결과:", result)

          }

}

 

2. 예외 강제 발생 예제

 

package main

 

import (

          "errors"

          "fmt"

)

 

// 강제 에러 발생 함수

func exampleFunction(input int) (string, error) {

          if input < 0 {

                    return "", errors.New("입력 값은 0 이상이어야 유효합니다")

          }

          return fmt.Sprintf("입력 값: %d", input), nil

}

 

func main() {

 

          // 에러 체크 예제

          inputs := []int{5, -3, 10}

 

          for _, input := range inputs {

                    result, err := exampleFunction(input)

                    if err != nil {

                              fmt.Printf("에러 발생: %s\n", err)

                    } else {

                              fmt.Println("결과:", result)

                    }

          }

}

 

 

3. 예외 처리 예제

package main

 

import "fmt"

 

func main() {  

          panicFunction() // 패닉 예외 발생시키는 함수 호출

}

 

func panicFunction() {

          // recover 함수와 defer 키워드를 사용하여 패닉 예외 처리

          defer func() {

                    if r := recover(); r != nil {

                              fmt.Println("패닉을 처리합니다:", r)

                    }

          }()

         

          fmt.Println("패닉 발생!!!")

          panic("패닉 상황 발생")

}

반응형

+ Recent posts