디시인사이드 갤러리

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

갤러리 본문 영역

재업) Ada, C++, Rust에서 FFI 시 예외 전파 차이점

나르시갤로그로 이동합니다. 2025.11.25 13:03:17
조회 131 추천 0 댓글 3
														

Ada, C++, Rust에서 FFI 시 예외 전파 차이점


프로그래밍 언어마다 예외(Exception)나 패닉(Panic)을 처리하는 방식이 다르고, 특히 FFI(Foreign Function Interface) 경계에서는 동작이 크게 달라집니다. Ada, C++, Rust를 비교해 보겠습니다.


? Ada


예외 전파 규칙: Ada 예외는 Ada 런타임 내부에서만 전파됩니다.


FFI 경계: 예외가 C로 넘어가지는 않습니다. → 핸들러가 없으면 Ada 런타임이 프로그램을 종료합니다.


안전한 패턴: FFI 래퍼 함수 안에서 exception … when others => … 블록을 두어 예외를 잡고, 외부 언어가 이해할 수 있는 값(예: 에러 코드)으로 변환하는 것이 권장됩니다.


? C++


예외 전파 규칙: C++ 예외는 C++ 코드 사이에서는 정상적으로 전파됩니다.


FFI 경계 (extern "C"): 예외가 C 경계를 넘으면 정의되지 않은 동작(UB)입니다. → 런타임 크래시나 메모리 손상이 발생할 수 있습니다.


안전한 패턴: try { … } catch (…) { … } 블록으로 예외를 잡고, C 함수에서는 에러 코드나 구조체를 반환하도록 변환해야 합니다.


? Rust


예외 전파 규칙: Rust에는 예외가 없고, 대신 panic!이 있습니다. 기본적으로 스택 언와인딩을 하며 상위 호출자에게 전달됩니다.


FFI 경계 (extern "C"): panic!이 C로 넘어가면 역시 정의되지 않은 동작(UB)입니다.


안전한 패턴: std::panic::catch_unwind를 사용해 패닉을 잡고, C 쪽으로는 에러 코드 등을 반환해야 합니다.


rust

#[no_mangle]

pub extern "C" fn kq_wrapper() -> i32 {

    let result = std::panic::catch_unwind(|| {

        // 실제 로직

        panic!("Rust panic!");

    });

    match result {

        Ok(_) => 42,

        Err(_) => -1, // 패닉을 에러 코드로 변환

    }

}


비교 요약


언어 내부 예외/패닉 전파 FFI 경계 동작 안전한 처리 방법

Ada Ada 런타임에서만 전파 외부 언어로 전달되지 않음, 처리 안 되면 종료 래퍼에서 when others로 잡아 에러 코드 변환

C++ C++ 코드 사이에서 전파 extern "C" 경계 넘으면 UB try/catch로 잡아 에러 코드 반환

Rust panic!으로 언와인딩 C로 넘어가면 UB catch_unwind로 잡아 에러 코드 반환


결론


Ada: 예외는 외부로 전파되지 않고 Ada 런타임이 종료 → 반드시 Ada 쪽에서 처리.


C++/Rust: 예외/패닉이 C 경계를 넘으면 UB → 반드시 경계에서 잡아 에러 코드로 변환.


공통적으로 FFI 경계에서는 예외를 외부 언어로 넘기지 말고, 안전하게 변환하는 래퍼를 작성하는 것이 필수입니다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
2906738 냥덩이 큰집 이력 발명도둑잡기(175.223) 12.06 95 0
2906737 IQ 테스트 정답공개 사람낚는어부갤로그로 이동합니다. 12.06 140 0
2906736 [애니뉴스][투표] 웹에서 비주얼노벨 구현 라이브러리 ㅇㅇ(121.172) 12.06 64 0
2906735 안마방 체험 썰.jpg ㅇㅇ(118.235) 12.06 77 0
2906734 프갤이랑 뉴프로랑 글리젠 비슷한거 같은데 [7] 헬마스터갤로그로 이동합니다. 12.06 101 0
2906733 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥발라당냥덩♥갤로그로 이동합니다. 12.06 101 0
2906732 자바 뉴비 질문이요 [3] ㅇㅇ갤로그로 이동합니다. 12.06 119 0
2906728 IQ 테스트 문제 하나 [9] 사람낚는어부갤로그로 이동합니다. 12.06 139 0
2906727 [애니뉴스][과학 컬럼] 사람들은 왜 광속을 불변이라고 할까? ㅇㅇ(121.172) 12.06 84 0
2906723 나님 ㅇ왤케 똑똑행? [5] ♥발라당냥덩♥갤로그로 이동합니다. 12.06 172 1
2906722 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [4] ♥발라당냥덩♥갤로그로 이동합니다. 12.06 137 0
2906721 사이드 플젝하니까 성취감이 생기네 [2] 프갤러(58.76) 12.06 125 1
2906720 조국혁신당이 미래다 이기이기 타이밍뒷.통수한방(1.213) 12.06 75 0
2906716 if else 를 뭐라 부르냐? ㅇㅇ갤로그로 이동합니다. 12.06 152 0
2906715 김남국 부정청탁 이재명의 김현지 꼬리자르기 시도 ♥발라당냥덩♥갤로그로 이동합니다. 12.06 134 0
2906714 짤줍 [1] ㅇㅇ갤로그로 이동합니다. 12.06 116 0
2906713 AI랑 데이터 분석 아니면 파이썬 거의 안쓰나? [5] 프갤러(175.197) 12.06 121 0
2906712 무협 좋아하는 사람? 최강의 무협 게임 기대 신작 7선! 발명도둑잡기(118.216) 12.06 62 0
2906711 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥발라당냥덩♥갤로그로 이동합니다. 12.06 98 0
2906710 인지과학조져라 손발이시립디다갤로그로 이동합니다. 12.06 106 0
2906709 정치가 정상화 되니 이제 연예계도 정상화 되어가네 [1] 야옹아저씨갤로그로 이동합니다. 12.06 100 0
2906708 하루에 오조오경줄 감사의 코딩 공기역학갤로그로 이동합니다. 12.06 119 0
2906707 한은 “국내 AI 전문인력 임금 프리미엄, 미국의 1/5 수준” 발명도둑잡기(118.216) 12.06 82 0
2906703 ‘고교 시절 중범죄’ 논란에…조진웅 소속사 “잘못했던 행동 있었다…성폭력 발명도둑잡기(118.216) 12.06 64 0
2906702 서울 한복판에 쏟아진 5만원권... 돈다발 쥔 시민들, 경찰에게 갔다 발명도둑잡기(118.216) 12.06 99 0
2906698 네부카드네자르 이름의 뜻과 비트코인 책사풍후zen갤로그로 이동합니다. 12.06 91 0
2906692 넥도리아 인생 프갤러(121.139) 12.06 138 0
2906685 otp 4년만에 복구 완료 넥도리아(220.74) 12.06 125 0
2906684 넥도리아 이분 무섭네요 [6] ㅇㅇ(118.235) 12.06 139 0
2906683 국민의힘도 타당하면 동의해줄 것이다. 윤카 제외하고, 넥도리아(220.74) 12.06 104 0
2906682 나의 물귀신 작전은 국민의힘 이 반대의 입장에서 말하는거라서, 넥도리아(220.74) 12.06 72 0
2906681 아이큐 테스트 문제 풀어줄사람 [2] RAIN갤로그로 이동합니다. 12.06 86 0
2906680 I nan, Administrator 감시자 넥도리아(220.74) 12.06 75 0
2906679 윈도우 계정 이름 Administrator 관리자 넥도리아(220.74) 12.06 82 0
2906678 달동네? ㅇㅅㅇ [2] 헤르 미온느갤로그로 이동합니다. 12.06 94 0
2906677 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 12.06 78 0
2906676 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 12.06 110 0
2906671 이거 왜 오류나요?ㅠ [3] ㅇㅇ(118.235) 12.06 103 0
2906667 121.139 중국인이 대한민국 국민 사살해도, 아무 말 못할 사람이다T [7] 넥도리아(220.74) 12.06 121 0
2906666 121.139 국제 정세 못 읽는 사람이다. 관심주지 마라. 관심법 넥도리아(220.74) 12.06 59 0
2906665 인신매매 정부 니들 매매랑 판매랑 뜻 아냐 중국정부? 마이크 사갖테스트 넥도리아(220.74) 12.06 86 0
2906663 일본과 중국 지지 안하지만, 솔직히 먼저 선전포고한놈이 잘못 한거 아닌가 [6] 넥도리아(220.74) 12.06 112 0
2906662 넥도리아 중일 전쟁 타이완 해협이 어딘지 알았습니다. [7] 넥도리아(220.74) 12.06 85 0
2906661 it 업계 남자와 여자의 차이 [1] 프갤러(121.139) 12.06 143 1
2906655 히야.. 이뇬 이거.. [4] ♥발라당냥덩♥갤로그로 이동합니다. 12.05 170 0
2906652 레고로 종이 한장 빨아올리는거 만들수 있나 발명도둑잡기(118.216) 12.05 85 0
2906650 음기 충전 발명도둑잡기(118.216) 12.05 94 0
2906642 러스트와 자바 서버 프로그래밍 비교 나르시갤로그로 이동합니다. 12.05 88 0
2906639 이번 클라우드플레어 장애 원인 [1] 나르시갤로그로 이동합니다. 12.05 156 0
2906638 한우 먹는중 프갤러(121.139) 12.05 66 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2