디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

zig 언어 예외처리앱에서 작성

발명도둑잡기갤로그로 이동합니다. 2025.03.12 10:04:24
조회 41 추천 0 댓글 0

챗지피티

Zig는 C와 유사한 저수준 시스템 프로그래밍 언어이지만, 예외 처리 방식이 기존의 C++이나 Java와 다릅니다.

1. Zig의 예외 처리 방식

Zig에서는 예외(Exception) 개념이 없고, 대신 오류(Error) 핸들링을 명시적으로 처리하는 방식을 사용합니다.

! 연산자를 이용한 오류 전파(Error Propagation)

fn mightFail() !i32 { return error.SomeError; // 오류 발생 } fn main() !void { const value = try mightFail(); // 오류가 발생하면 main도 오류 반환 _ = value; }

mightFail() 함수는 !i32를 반환 → 즉, i32 값이거나 오류(error.SomeError)가 될 수 있음.

try를 사용하여 오류를 자동 전파(error propagation)할 수 있음.

2. catch를 사용한 오류 처리

Zig에서는 catch를 사용하여 오류를 잡고 처리할 수 있음.

fn mightFail() !i32 { return error.SomeError; } fn main() void { const value = mightFail() catch -1; // 오류 발생 시 -1 반환 std.debug.print("Result: {}\n", .{value}); }

catch 키워드를 사용하여 오류 발생 시 기본 값을 제공.

mightFail()이 오류를 반환하면 -1이 대신 할당됨.

3. switch를 사용한 오류 매칭

Zig의 switch문을 사용하면 오류 유형별로 다르게 처리할 수 있음.

fn mightFail() !i32 { return error.FileNotFound; } fn main() void { const result = mightFail() catch |err| switch (err) { error.FileNotFound => -1, error.PermissionDenied => -2, else => -99, }; std.debug.print("Result: {}\n", .{result}); }

특정 오류 유형별로 다른 값을 반환할 수 있음.

else를 사용하여 나머지 오류를 처리 가능.

4. errdefer를 사용한 정리 코드 실행

Zig에서는 errdefer를 사용하면 오류가 발생했을 때만 실행되는 정리(clean-up) 코드를 작성할 수 있음.

const std = @import("std"); fn example() !void { const file = try std.fs.cwd().openFile("data.txt", .{}); errdefer file.close(); // 오류 발생 시 파일 닫기 // 파일 작업 수행... }

errdefer는 함수가 오류를 반환하는 경우 실행됨.

defer와 달리 정상적으로 실행될 때는 실행되지 않음.

결론

Zig는 **C++의 예외 처리(exception handling)**를 사용하지 않음.

대신, ! 연산자를 이용한 오류 전파, catch, switch, errdefer 등을 활용한 오류 처리를 제공.

시스템 프로그래밍에서 예외보다 명시적인 오류 반환이 더 안전하고 예측 가능하다는 철학을 따름.


---
"도둑은 집을 떠나며 주인을 욕한다" - 러시아 속담

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 매니저들에게 가장 잘할 것 같은 스타는? 운영자 25/03/10 - -
2828751 너네는 개발자 커뮤니티 가는 곳있냐 개발이야기하는곳 [3] ㅆㅇㅆ찡갤로그로 이동합니다. 03.12 75 0
2828750 근데 보통 회사에서 개발팀이 쌔냐 사업팀이 쌔냐 ㅇㅅㅇ? [12] 강유현갤로그로 이동합니다. 03.12 86 0
2828749 尹 석방 후 SNS에 "목 따러 간다" 암살 예고 글…경찰 내사 발명도둑잡기갤로그로 이동합니다. 03.12 42 0
2828748 “DJ 야당이라면 계엄 포용했을 것”…인요한 발언에 DJ 측 “후안무치” 발명도둑잡기갤로그로 이동합니다. 03.12 36 0
2828747 금융공기업 가지마라 [1] 프갤러(211.246) 03.12 61 0
2828746 개발 커뮤에서 매일같이 화나 있는 애들은 특징이 있더라 [3] ㅇㅇ갤로그로 이동합니다. 03.12 64 0
2828745 [속보]민주당 “이재명 암살 구체적 계획 제보받아…신변보호 요청 검토” 발명도둑잡기갤로그로 이동합니다. 03.12 34 0
2828744 윈도우 개발자들은 LLM한테 따잇당할 걱정 없음 ㅇㅅㅇ [4] 강유현갤로그로 이동합니다. 03.12 83 0
2828743 현재상황은... 개발자가 퇴사하면 그자리는 ai 가 매꾼다 [8] 피치피(211.219) 03.12 88 0
2828742 병신 좆소 아류개발자새끼들 꼴보기싫음 ㅇㅅㅇ [4] 강유현갤로그로 이동합니다. 03.12 79 0
2828741 프랑스 정교분리 라이시떼 발명도둑잡기갤로그로 이동합니다. 03.12 29 0
2828740 모닝코딩으로 이진트리 구현이나 해야겠다 [10] 40대프린이(118.235) 03.12 96 0
2828739 [단독]윤석열, 20대 대선 직전 신천지 접촉 드러나 발명도둑잡기갤로그로 이동합니다. 03.12 30 0
2828738 개딸 사형! [1] 프갤러(121.172) 03.12 49 0
2828737 [애니 뉴스] 댓글 작업 끝- 프갤러(121.172) 03.12 37 0
2828736 클라우드 엔지니어를 준비를 하고 있는 대학생 3학년입니다 [1] 프갤러(114.70) 03.12 53 0
2828735 짱깨먼지폭풍 한반도에 또 민폐 ♥냥덩♥갤로그로 이동합니다. 03.12 26 0
2828734 2024 SEASON 〈최강야구〉 타이틀송 - 여전히 푸르다 (Still 발명도둑잡기갤로그로 이동합니다. 03.12 23 0
2828733 코딩이 일부는 사라져도 결국 프롬프트 기획자 있어야되지않나 [1] ㅇㅇ(118.44) 03.12 50 0
2828732 요 며칠 실시간으로 연봉이 떨어지고 있어서 딱님갤로그로 이동합니다. 03.12 42 0
2828731 내 스승님이 알려준 이진트리 면접관련해서 웃긴거 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 03.12 155 0
2828730 말을 고추같이 하다니 야해 [1] ㅇㅇ(211.219) 03.12 36 0
2828729 미국이 삼성 죽이기 하자 민주당과 유착되는 삼성 발명도둑잡기갤로그로 이동합니다. 03.12 93 0
2828728 형님들 인생 조언점요 (웹개발자 응애) [1] ㅇㅇ갤로그로 이동합니다. 03.12 77 0
2828727 가난한 사람은 총 때문에 창문을 못 연다는 미국 발명도둑잡기갤로그로 이동합니다. 03.12 25 0
2828726 [자유 대한민국] 민주당이 탄핵을 난발했던 이유- 프갤러(121.172) 03.12 32 0
2828724 공격 시도 하는 아이피 자동 차단하는 프로그램 발명도둑잡기갤로그로 이동합니다. 03.12 41 0
2828723 흐린아 말좆같게한건 사과한다 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 03.12 52 0
2828722 나님 질문 받으시다 딱님갤로그로 이동합니다. 03.12 28 0
2828721 툴키디들이 컴터 내부동작원리도 모르고 깝추는거 보면 [4] ♥냥덩♥갤로그로 이동합니다. 03.12 55 0
2828720 에휴 개망했네.. 원점으로 되돌아가 재검토 하자고. *루비*갤로그로 이동합니다. 03.12 39 0
2828719 코딩 속도는 llm때문에 늘었는데 왜 게임 전체프로세스는 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 03.12 55 0
2828718 좇센에서 태어난걸 감사히 여겨라 뒷통수한방(1.213) 03.12 26 0
2828717 2030이 미래당☀+ ♥냥덩♥갤로그로 이동합니다. 03.12 28 0
2828715 흐린아 넌 아녀자의 용맹을 가져서 그런거임 [3] ㅆㅇㅆ찡갤로그로 이동합니다. 03.12 47 0
zig 언어 예외처리 발명도둑잡기갤로그로 이동합니다. 03.12 41 0
2828713 ❤✨☀⭐나님 시작합니당⭐☀✨❤ ♥냥덩♥갤로그로 이동합니다. 03.12 31 0
2828712 나님 오늘 개발귀 모드♥ [6] 헬마스터갤로그로 이동합니다. 03.12 54 0
2828711 예전에 마이크로소프트 관련 책 보니까 c++ 써서 후회했다더라 [1] 발명도둑잡기갤로그로 이동합니다. 03.12 55 0
2828710 주가 확인도 해야 하는데 시간이 없네 ㅠㅠ *루비*갤로그로 이동합니다. 03.12 28 0
2828709 아.. LLM 믿었다가 낭패봤네 ㅎㅎ [4] *루비*갤로그로 이동합니다. 03.12 56 0
2828708 솔직히 인디겜 만들면 성공율 2프로가 안됨 [5] ㅆㅇㅆ찡갤로그로 이동합니다. 03.12 56 0
2828707 쓸만한 오픈소스 포트스캐너가 앵그리 스캐너뿐인데 [1] 발명도둑잡기갤로그로 이동합니다. 03.12 26 0
2828706 짱깨 좆같은건 좆같은건데 개발 커뮤니티는 괜찮더라 ㅇㅅㅇ [5] 강유현갤로그로 이동합니다. 03.12 56 0
2828705 마누스 해킹이후 오픈 마누스 프로젝트 피치피(211.219) 03.12 44 0
2828704 lsof 비슷한 ms윈도우용 명령어 발명도둑잡기갤로그로 이동합니다. 03.12 30 0
2828703 졷소 요구사항은 LLM도 빡쳐서 시스템 셧다운됨 ㅇㅅㅇ [3] 강유현갤로그로 이동합니다. 03.12 52 0
2828702 에이전시 <- 디자인 원툴인데 더욱 원툴 [1] 피치피(211.219) 03.12 37 0
2828701 오전작업 끝나고 선족이 행님이랑 돗자리 켜고 자려고 누움 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 03.12 33 0
2828700 코딩 사라지는게 가시권이야... 엔트로픽 CEO말대로 ㅠ [3] 피치피(211.219) 03.12 55 0
뉴스 “합법과 불법 사이”…강하늘·유해준·박해준, 신선한 마약수사판 짠 ‘야당’ [종합] 디시트렌드 03.13
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2