디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.25 13:03:17
조회 53 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
이슈 [디시人터뷰] 충무로가 주목하는 신예, '세계의 주인' 서수빈 운영자 25/11/24 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
2904742 끙야참기 은근 쾌감?있는듯? ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.25 47 0
2904739 지귀연판사 말투 개웃기지않냐? [5] 헬마스터갤로그로 이동합니다. 11.25 61 0
2904735 한국에서 수준운운 의미없다. [6] 프갤러(110.8) 11.25 78 0
2904734 촉촉한 초코 케익처럼 달콤한 모모링❤ ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.25 22 0
2904733 앱히키는 창년임 ㅇㅇ(222.108) 11.25 58 0
2904730 요새 1인 개발이 유행임? ㅋㅋ [1] 프갤러(118.235) 11.25 103 3
2904729 국가부도사태 초읽기 대.재.명 [5] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.25 97 1
2904727 식당 들어갔는데 알바생이 젊고 예쁨 [3] ㅁㅁㅅ갤로그로 이동합니다. 11.25 68 0
2904725 실력자의 기준이 뭐냐? [7] 프갤러(211.240) 11.25 103 0
2904720 전남친토스트맛 [3] 넥도리아(223.38) 11.25 39 0
2904718 달력받으러 신한은행 넥도리아(223.38) 11.25 36 0
2904717 인버스를 사지 않는 이유가 이해되지 않는군 [11] chironpractor갤로그로 이동합니다. 11.25 85 0
재업) Ada, C++, Rust에서 FFI 시 예외 전파 차이점 [3] 나르시갤로그로 이동합니다. 11.25 53 0
2904711 해킹 관련 질문 검열 안하는 인공지능 채팅 있나요 [1] 발명도둑잡기(118.235) 11.25 52 0
2904709 이거 검열 삭제 된다 발명도둑잡기(118.235) 11.25 70 0
2904706 파묘가 100억 손해? 영화 티켓값 내릴 수 있는 방법 알려드림 발명도둑잡기(118.235) 11.25 31 0
2904704 M-DIR 클론코딩 소스 발명도둑잡기(118.235) 11.25 47 0
2904703 인버스를 사는 이유가 이해되지 않는군 [4] ㅇㅇ갤로그로 이동합니다. 11.25 129 0
2904702 요즘 웹개발 취업시장 어때요 [1] 프갤러(211.234) 11.25 88 0
2904700 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.25 50 0
2904699 프갤에 인생 40년 갈아넣었습니다 [5] chironpractor갤로그로 이동합니다. 11.25 68 0
2904696 그래픽스 엔지니어 신입으로 들어가는 게 가능한가? [4] 프갤러(112.154) 11.25 77 0
2904695 일본 취업 유학 워홀 여행 관련모임 ㅇㅇ(106.146) 11.25 60 0
2904693 러스트 인생 40 년 갈아 넣었습니다. [2] 프갤러(59.16) 11.25 78 0
2904691 이벤트 루프 며칠 있으면 완성될 듯 ㅋㅋ 나르시갤로그로 이동합니다. 11.25 51 0
2904686 조별 프로젝트 조언부탁드려요 [1] ㅇㅇ(14.32) 11.25 60 0
2904680 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.25 88 0
2904631 인지과학조져라 손발이시립디다갤로그로 이동합니다. 11.25 73 0
2904621 똥글 싸는 고닉들 다 뒤졌으면 좋겠다. [1] 프갤러(112.171) 11.25 47 1
2904619 살면서 순수 내의지로 무언가 열심히한게 [2] 공기역학갤로그로 이동합니다. 11.25 69 0
2904612 플밍갤말고 딴갤없냐 프갤러(59.14) 11.25 36 0
2904601 유튜브 광고에 피싱사이트 나오더라 헬마스터갤로그로 이동합니다. 11.25 40 0
2904588 꽃무늬 돌고래.. ㅇㅅㅇ [3] 헤르 미온느갤로그로 이동합니다. 11.25 54 0
2904586 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 11.25 40 0
2904584 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 11.25 66 0
2904523 사실 안뽑히는 이유는 아직 지원을 안했기 때문이지 [3] 프갤러(110.8) 11.24 92 0
2904522 짱깨먼지 좃같노 [1] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 103 0
2904521 남북한/일본은 중국에 미세먼지 공동대응해야함 [1] ㅇㅇ(211.216) 11.24 33 0
2904518 안뽑히는 이유 알았다. 나 러스트 존나 못한다. [5] 프갤러(110.8) 11.24 119 0
2904513 회사다니다 보면 바보되어가는 느낌 [4] CANON갤로그로 이동합니다. 11.24 106 0
2904510 가끔 알 수 없는 감정이 들때면 [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 67 0
2904506 린겨 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 47 0
2904503 26학번 새내기들을 위한 입시 면접 합격 가이드(따뜻한 조언)!Y 프갤러(121.142) 11.24 114 2
2904501 와 개씨발 모기잇노 [1] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 102 0
2904500 대한민국 출산율 회생방안 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 49 0
2904499 너, 재판 쌓여있잖아 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 89 0
2904496 API 왤케 비쌈? ㅇㅇ갤로그로 이동합니다. 11.24 73 0
2904495 나님 누웅..✨ ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 35 0
2904490 ㄴㅏ씻주준⭐+ [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 106 0
2904489 재롱둥이 친중재명 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 40 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2