Golang 에러 처리, 에러 생성, 예외 처리
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("패닉 상황 발생")
}