Menu
Coddy logo textTech

기초 에러 처리

Coddy GO 여정의 기초 섹션에 포함된 레슨 — 109개 중 108번째.

기본적인 에러 처리는 실패할 가능성이 있는 작업 후에 에러를 확인하는 Go의 기본적인 패턴입니다.

0으로 나눌 때 에러를 반환하는 간단한 나눗셈 함수를 만들어 보면서 Go에서 에러를 처리하는 방법을 배워봅시다:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

이 함수는 나눗셈 결과와 에러라는 두 개의 값을 반환합니다. 나누는 수가 0이면 나눗셈을 시도하는 대신 에러 메시지를 반환합니다.

이제 이 함수를 사용하는 방법과 잠재적인 오류를 처리하는 방법을 살펴보겠습니다:

result, err := divide(10, 0)
    
if err != nil {
    fmt.Println("Error occurred:", err)
    return // 실행을 중단하거나 오류를 처리합니다
}
    
fmt.Println("Result:", result)

이 코드를 실행한 후, if err != nil 조건을 사용하여 오류가 발생했는지 확인합니다. 0으로 나누기를 시도했기 때문에 함수는 오류를 반환하며, 화면에는 다음과 같이 표시됩니다:

Error occurred: division by zero

에러를 마지막 반환 값으로 반환하고 이를 즉시 확인하는 이 패턴은 Go에서 매우 흔히 사용됩니다. 이는 프로그램이 중단되는 대신 실패를 유연하게 처리할 수 있도록 해줍니다.

challenge icon

챌린지

쉬움

이 챌린지에서는 Go의 기본적인 에러 핸들링을 연습합니다. 두 숫자를 나누는 함수가 있지만, 0으로 나누면 런타임 에러가 발생합니다. 여러분의 과제는 이러한 크래시를 방지하기 위해 에러 핸들링을 추가하는 것입니다.

코드에는 이미 결과와 에러를 모두 반환하는 함수가 포함되어 있습니다. 결과를 사용하기 전에 에러가 있는지 확인해야 합니다.

치트 시트

Go에서 실패할 가능성이 있는 함수는 마지막 반환 값으로 에러를 반환합니다:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

if err != nil을 사용하여 에러를 확인합니다:

result, err := divide(10, 0)
    
if err != nil {
    fmt.Println("Error occurred:", err)
    return // Stop execution or handle the error
}
    
fmt.Println("Result:", result)

이 패턴을 통해 프로그램이 충돌하는 대신 실패를 우아하게 처리할 수 있습니다.

직접 해보기

package main

import (
	"errors"
	"fmt"
)

// 이 함수는 x를 y로 나누고 y가 0이면 에러를 반환합니다
func divide(x, y float64) (float64, error) {
	if y == 0 {
		return 0, errors.New("cannot divide by zero")
	}
	return x / y, nil
}

func main() {
	// 테스트 값
	numerator := 10.0
	denominator := 0.0
	
	// divide 함수 호출
	result, err := divide(numerator, denominator)
	
	// TODO: err가 nil이 아닌지 확인 (에러가 있는 경우)
	// 에러가 발생하면 fmt.Println(err)를 사용하여 출력
	// 그렇지 않으면 fmt.Printf("Result: %.2f\n", result)를 사용하여 결과 출력
	
	// 이 줄을 제거하고 위에 적절한 에러 처리를 구현하세요
	fmt.Printf("Result: %.2f\n", result)
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨