@errorReturnTrace — 에러 리턴 추적 스택 가져오기

@errorReturnTrace — 에러 리턴 추적 스택 가져오기

프로그램이 어디까지 와서 에러를 만났는지 알 수 있게 해주는 내장 함수예요. 다만 이 함수가 항상 동작하는 건 아니고, 빌드 옵션에 따라서 동작 여부가 갈려요. 그래서 언제 실제 스택을 돌려주고 언제 빈 손으로 돌려주는지를 먼저 짚고 넘어갈게요.

출처: Zig Documentation

본문

@errorReturnTrace() ?*std.lang.StackTrace

이 함수를 호출하는 시점에 두 가지 조건이 함께 갖춰져야 실제 스택 트레이스 객체를 돌려받아요.

먼저 바이너리가 에러 리턴 추적(error return tracing) 기능을 켜고 빌드되어야 해요. 그리고 이 함수가 에러 반환형이나 에러 유니온 반환형을 가진 함수를 호출하는 함수 안에서 호출되어야 해요. 두 조건이 모두 성립하면 std.lang.StackTrace 객체를 가리키는 포인터를 반환하죠. 만약 둘 중 하나라도 맞지 않으면 null을 반환해요.

반환형이 옵셔널 포인터(?*)라서, 값을 쓰기 전에 null인지 먼저 확인하는 습관이 필요해요. 그래야 추적이 꺼져 있는 빌드에서 돌려받은 null을 감싸 안전하게 처리할 수 있어요.

더 알아보기

  • 에러 반환값이 아니라 값을 변환하는 쪽이라면, 다음에 나오는 @errorCast 내장 함수를 함께 봐두면 좋아요.
  • 에러 유니온 반환형(error / E!T)이 어떤 맥락에서 쓰이는지가 헷갈린다면, 이 함수가 요구하는 '호출 조건'을 이해하는 데 도움이 되니 그 부분부터 다시 살펴보세요.