본문 바로가기
Zig

[Zig] 에러(errors)

by 코드쉼터 2024. 3. 20.

에러는 단순히 값으로 취급합니다. 에러 셋(error sets) 을 만드는 방법은 아래와 같습니다.

---------------------------------------------------------------------------------------------------

 const 에러 셋 이름 = error

 {

    // 에러 값들

 };

---------------------------------------------------------------------------------------------------

 

예시

const MyErrorSet = error
{
    TooSmall,
    TooBig,
};

 

fn detectProblems (n : u32) MyErrorSet ! u32 
{
    if (n < 10) return MyErrorSet.TooSmall;
    if (n > 20) return MyErrorSet.TooBig;
    return n;
}

 

// 숫자가 10 보다 작거나 20 보다 크면 에러값을 반환

const error = detectProblems(30);

std.debug.print("{}", .{error}); // "error.TooBig" 출력됨

 

 

 

일반적인 값 또는 에러 상태를 같이 가질 수 있는 변수를 만들 수도 있습니다.

---------------------------------------------------------------------------------------------------

 const 또는 var 변수 이름 : 에러 셋 이름 ! 형태와 크기 = 할당할 초기 값 또는 에러 값

---------------------------------------------------------------------------------------------------

 

예시

var my_number_or_error : MyErrorSet ! u8 = 5

 

 

 

일반적인 값 또는 에러 상태를 반환하는 함수는 다음과 같이 만듭니다.

---------------------------------------------------------------------------------------------------

 pub 또는 생략 fn 함수이름 ( 입력 인자들... ) 에러 셋 이름 ! 형태와 크기

 {

    // 함수 호출시 실행될 내용

    일반 반환 값 또는 에러 값 ;

 }

 

에러 셋 이름 ! 형태와 크기 : 이 전체를 하나의 반환형으로 생각하시면 좋습니다.

---------------------------------------------------------------------------------------------------

 

예시

// 입력 값이 10 미만이면 에러를 반환하고 아니면 10을 빼는 함수

fn subtractTenOrError ( n : u32 ) MyErrorSet ! u32 
{
    if (n < 10)
    {
        return MyErrorSet.TooSmall;
    }
    else
    {
        return n - 10;
    }
}

 

 

 

'Zig' 카테고리의 다른 글

[Zig] switch 조건문(statement)  (0) 2024.03.21
[Zig] 지연(defer)  (0) 2024.03.20
[Zig] 함수(functions)  (0) 2024.03.20
[Zig] for 반복문(loop)  (0) 2024.03.20
[Zig] while 반복문(loop)  (0) 2024.03.20