실패 정리를 위한 errdefer
무언가 실패했을 때만 작업을 되돌립니다.
실패 정리를 위한 errdefer은(는) CoddyKit의 무료 Zig Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Zig Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
실패할 때만 정리하기
작업이 실패하면 작업을 되돌리되 성공하면 그대로 유지해야 할 때가 있습니다. 바로 이런 경우를 위해 errdefer를 사용합니다.
errdefer 만나기
errdefer는 범위를 벗어날 때 실행할 코드를 예약하지만, 해당 시점 이후 함수가 오류를 반환할 때만 실행합니다.
errdefer allocator.free(buffer);defer는 항상, errdefer는 오류 시에만
defer는 범위가 어떤 방식으로 끝나든 실행됩니다. errdefer는 오류 경로에서만 실행되므로 성공하면 완전히 건너뜁니다.
완성 중인 결과 해제하기
할당한 다음 errdefer로 해제를 예약하십시오. 이후 단계가 실패하면 버퍼가 해제되고, 모든 단계가 성공하면 버퍼를 유지하여 반환합니다.
const buf = try allocator.alloc(u8, n);
errdefer allocator.free(buf);
try fill(buf);할당 순서가 해제 순서를 반영함
각 errdefer를 해당 리소스를 획득한 직후에 배치하십시오. 실패하면 역순으로 실행되어 안전한 순서로 리소스를 되돌립니다.
const a = try open();
errdefer a.close();
const b = try open();
errdefer b.close();성공하면 작업이 유지됨
함수가 오류 대신 값을 반환하면 모든 errdefer를 건너뜁니다. 호출자는 완성된 결과를 받습니다.
return buf;등록 시점이 중요함
errdefer는 등록된 이후에 발생한 오류만 처리합니다. 해당 줄보다 앞에서 발생한 오류에는 실행되지 않으므로 일찍 배치하십시오.
오류 캡처하기
정리 중에 확인할 수 있도록 errdefer에서 오류를 캡처할 수 있습니다. 예를 들어 어떤 실패가 되돌리기를 발생시켰는지 기록할 수 있습니다.
errdefer |e| std.debug.print("failed: {}\n", .{e});누수 없는 생성자 만들기
할당한 뒤 실패할 수 있는 함수는 errdefer를 사용하여 메모리 누수가 발생하지 않도록 합니다. 오류가 발생하면 부분적으로 수행된 작업이 자동으로 되돌아갑니다.
try와 결합하기
각 try는 오류가 발생하면 일찍 종료될 수 있습니다. errdefer가 등록되어 있으면 이러한 조기 종료에서도 되돌아가기 전에 정리가 실행됩니다.
const x = try step();
errdefer rollback(x);
_ = try next(x);되돌리기에 적합한 도구
문제가 발생했을 때만 정리해야 한다면 errdefer를 사용하십시오. 오류 경로의 리소스 관리를 명확한 한 줄로 표현할 수 있습니다.
빠른 확인
버퍼를 할당한 뒤 이후 단계에서 실패할 수 있습니다. 실패할 때만 버퍼를 해제하고 싶다면 무엇을 사용해야 할까요?
복습
errdefer를 사용해 오류 경로에서 부분 작업을 되돌리고, 각 리소스를 획득한 직후에 배치했으며, 성공한 결과는 그대로 유지했습니다. ✅
자주 묻는 질문
“실패 정리를 위한 errdefer” 강의는 무료인가요?
네 — “실패 정리를 위한 errdefer” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Zig Academy 강의 전체를 잠금 해제할 수 있습니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“실패 정리를 위한 errdefer”에서 뭘 배우나요?
무언가 실패했을 때만 작업을 되돌립니다. 브라우저에서 직접 실행하는 실습 코드로 Zig Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Zig Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Zig Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“실패 정리를 위한 errdefer” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Zig Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Zig Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- catch로 복구하기
- 특정 오류에 따라 switch 사용하기
- 실패 정리를 위한 errdefer
- 오류 래핑과 다시 던지기