디시인사이드 갤러리

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

갤러리 본문 영역

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

발명도둑잡기갤로그로 이동합니다. 2025.03.12 10:04:24
조회 27 추천 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 - -
2828850 떨어졌다 ㅇㅅㅇ [6] 강유현갤로그로 이동합니다. 03.12 80 0
2828849 양말 순수 면양말 샀으면 좋겠다 발명도둑잡기갤로그로 이동합니다. 03.12 18 0
2828848 개 씨발 새끼야 나 내일 휴가라고 아스카영원히사랑해갤로그로 이동합니다. 03.12 36 0
2828847 인강 찍었다!!! [1] 프갤러(172.225) 03.12 29 0
2828846 흔들림이 없는 개발귀의 경지 [2] 헬마스터갤로그로 이동합니다. 03.12 70 0
2828845 C++) C++충이지만 자바 Http연결부분은 잘만든게 확실합니다. [2] 디라이더갤로그로 이동합니다. 03.12 48 1
2828844 [애니 뉴스] 조회수 추가- [1] 프갤러(121.172) 03.12 37 0
2828840 대학교 1학년아 이거봐라 [2] ㅆㅇㅆ(124.216) 03.12 64 0
2828839 자바 스프링이 병신이라는 증거 [6] 프갤러(121.138) 03.12 93 0
2828838 형들 대학교 1학년 조언 간절히 구함 [8] ㅇㅇ(118.235) 03.12 65 0
2828836 오늘 영국인 친구가 머큐리 코더인가 좋다고 써보라더라 [1] ㅆㅇㅆ(124.216) 03.12 40 0
2828835 퇴근하고 집왔다 [4] ㅆㅇㅆ(124.216) 03.12 36 0
2828834 사기꾼중에 제일 무서운 사기꾼은 [10] 40대프린이(118.235) 03.12 93 1
2828833 KBS 드라마 악역 이름 문정인, 딸 이름 민주련, 남주는 나씨 발명도둑잡기갤로그로 이동합니다. 03.12 28 0
2828832 PHP신규플젝도 하냐?? ㅇㅅㅇ [6] 강유현갤로그로 이동합니다. 03.12 65 0
2828831 [자유 대한민국] (연구) 국민의 생애주기 설계- 프갤러(121.172) 03.12 19 0
2828830 망해버린 프흐프갤을 내 일기장으로 써야겠다 이기 [12] 슈퍼막코더(126.179) 03.12 56 0
2828829 윤석열 탄핵 못하면 세계 3차대전 일어날 수도 있다 [5] 발명도둑잡기갤로그로 이동합니다. 03.12 57 0
2828828 211.234=김대기 [1] 발명도둑잡기갤로그로 이동합니다. 03.12 43 0
2828827 “‘대치동 전설’이던 아내 트로트 가수에 빠져 명품 선물, 땅까지 팔아” 발명도둑잡기갤로그로 이동합니다. 03.12 31 0
2828826 자바 시니어들의 패권에 도전하지 마라 [3] ㅇㅇ(211.234) 03.12 60 0
2828825 기업과 정부의 미필적 고의...그렇게 73명이 죽었다 발명도둑잡기갤로그로 이동합니다. 03.12 29 0
2828824 세계최고 인문학자가 꿈인데요 ㅋ [3] 나트륨찡갤로그로 이동합니다. 03.12 37 0
2828823 컴공도 디자인이나 건축처럼 실무능력있는사람 교수로 임용하면 안되나? [13] ㅇㅇ(59.15) 03.12 109 0
2828822 개꿀 야리끼리치잔다 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 03.12 45 0
2828820 나님은 엄청 가능성 있는 나님이얌,,,, 나트륨찡갤로그로 이동합니다. 03.12 40 0
2828819 내란 지지는 정상적인 논리가 아니니까 발명도둑잡기갤로그로 이동합니다. 03.12 19 0
2828818 윤석열 빨리 탄핵해야 주가가 약간 오른다 발명도둑잡기갤로그로 이동합니다. 03.12 21 0
2828817 잊어선 안 될 역사…'국회 봉쇄는 내란' 45년 전 사진의 증언 발명도둑잡기갤로그로 이동합니다. 03.12 18 0
2828816 삼부토건과 도이치 주가조작 '판박이' 발명도둑잡기갤로그로 이동합니다. 03.12 20 0
2828815 "곰 모양 젤리는 우리만" 하리보 상표권 분쟁 패소 발명도둑잡기갤로그로 이동합니다. 03.12 25 0
2828814 나도 네이버 상생교육인가 머시기 한 달짜리 들은적 있음 ㅇㅅㅇ [2] 강유현갤로그로 이동합니다. 03.12 42 0
2828813 오늘의 소설, 영화 실마리: 부모님을 체세포 복제 발명도둑잡기갤로그로 이동합니다. 03.12 18 0
2828812 "죽은 반려견 보고싶다"…3200만원 들여 복제한 中 여성 화제 발명도둑잡기갤로그로 이동합니다. 03.12 27 0
2828811 갑자기 아타시 인기스타 되어버림 ㅇㅅㅇ ㅋㅋ [6] 강유현갤로그로 이동합니다. 03.12 58 0
2828810 ESP32 블루투스 펌웨어 백도어처럼 휴대폰, 노트북 블루투스, 와이파이 발명도둑잡기갤로그로 이동합니다. 03.12 23 0
2828809 인터넷에서 사람은 평등한 게 아니었음 [8] 나트륨찡갤로그로 이동합니다. 03.12 87 0
2828808 허리 아푸넹.. [3] ♥냥덩♥갤로그로 이동합니다. 03.12 41 0
2828807 <플랜 75>란 영화 있대서 생각나는 예전 글 발명도둑잡기갤로그로 이동합니다. 03.12 19 0
2828805 오늘 집가면 할 프로그래밍 생각중 [7] ㅆㅇㅆ찡갤로그로 이동합니다. 03.12 55 0
2828803 컴공 학습 방법 질문 [8] ㅇㅇ(223.38) 03.12 79 0
2828802 기업에서 운영하는 국비듣고있는데 ㅈ됐다 [4] 프갤러(112.172) 03.12 96 0
2828801 입베디드가 ㄹㅇ 찐 애국보수들 직업임 [2] 뒷통수한방(1.213) 03.12 54 0
2828800 차은우 이새끼 정체가 뭐냐?? [2] 뒷통수한방(1.213) 03.12 61 0
2828799 오늘 야리끼리칠듯 물건이 안온다 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 03.12 29 0
2828798 [자유 대한민국] 비상계엄령과 계몽령, 그리고 적들의 인식체계 [1] 프갤러(121.172) 03.12 34 0
2828797 2번 가고 탈주한 동아리 아직도 바보같은거 하고있네 [8] 공기역학갤로그로 이동합니다. 03.12 59 0
2828796 211.234 직업 심리공작원 의심 줌 발명도둑잡기갤로그로 이동합니다. 03.12 25 0
2828795 프흐프로 에이피아이 서버만든다는게 [4] 슈퍼막코더(126.179) 03.12 39 0
2828794 웹의70%이상이 php맞누?? [1] 뒷통수한방(1.213) 03.12 47 0
뉴스 박하선 주연 ‘사이코패스 여순정’, 오늘 펄스픽서 첫 공개 디시트렌드 03.12
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2