디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.25 13:03:17
조회 121 추천 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/12/08 - -
이슈 [디시人터뷰] 솔직함을 리뷰하는 유튜버, 흑백리뷰 운영자 25/12/09 - -
AD 루틴 ON! 운동 찐템! 지금 할인 중 운영자 25/11/27 - -
2905380 유럽처럼 민주노총 IT산별노조가 크면 된다 발명도둑잡기(118.216) 11.29 44 0
2905379 1893년 미국, 세계 최초로 자전거를 탄 여성 발명도둑잡기(118.216) 11.29 50 0
2905378 내년 만 30세 경력 1년 6개월인데 다시 취업될 수 있을까? 프갤러(119.201) 11.29 76 0
2905376 마소 주식 0.001주 3번 샀는데 내려갔는데 이거 못파나요? 넥도리아(220.74) 11.29 71 0
2905374 핵반응로 논쟁은 금방 끝나고 자전거 창고 논쟁은 길다는 역설 발명도둑잡기(118.216) 11.29 58 0
2905371 나도 맨날 대표랑 싸웠지 [2] 프갤러(110.8) 11.29 131 0
2905365 리액트 배울때 헛짓거리한거 기억나네 ㅇㅇ(113.59) 11.29 95 0
2905364 리액트 배우기 귀찮아서 웹프로젝트 할땐 바이브코딩한다 프갤러(118.235) 11.29 90 0
2905363 국장이랑 미장 할 때 기분 차이 [4] chironpractor갤로그로 이동합니다. 11.29 120 1
2905362 우리 회사 대리세끼 대표랑 맨날 싸움 [10] ㅇㅇ(221.168) 11.28 121 0
2905360 DB에서 count(*) 얘는 자원 많이 쓰는 작업임? [4] 프갤러(58.29) 11.28 116 0
2905359 남지현, '은애하는 도적님아'로 이어갈 사극 불패 신화 발명도둑잡기(118.216) 11.28 95 0
2905356 입시 면접 FM 합격 솔루션(필승 전략 해법)!U 프갤러(121.142) 11.28 96 2
2905353 조갑제도 “국힘은 이적단체”…여당은 ‘내란 가짜뉴스’ 대응 중 발명도둑잡기(118.216) 11.28 66 0
2905352 해외 투자 증세에 관해 [3] 발명도둑잡기(118.216) 11.28 136 0
2905351 나님 달러 미국주식 풀매수중 ㅇㅅㅇ [5] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 122 0
2905350 미국주식갤에서 친미매국노들 욕하다가 차단당함 [3] 손발이시립디다갤로그로 이동합니다. 11.28 82 0
2905348 영어를 못해서 구글을 못가네 [1] ㅇㅇ갤로그로 이동합니다. 11.28 95 0
2905345 원티드 자격요건은 거기 직원들도 다 못할거 같은데 ㅇㅇ(182.228) 11.28 72 0
2905343 오픈소스에서는 취약점을 감시하는 사람이 더 많다 발명도둑잡기(118.216) 11.28 75 0
2905342 사타구니 털 제모하면 이상한 사람인가요? [5] 넥도리아(220.74) 11.28 98 0
2905341 노말틱도 말해주잖아 오픈소스의 취약점 [1] ㅇㅇ(114.30) 11.28 99 0
2905340 <복면가왕> 관련 생각나는 예전 글 발명도둑잡기(118.216) 11.28 85 0
2905339 정치가 어쨌든 나라가 어쨌든 국가가 어쨌든 삶이 어쨌든 [8] 넥도리아(220.74) 11.28 103 0
2905337 저좀 어떻게 성공시켜 주실 분 없나요? [2] 넥도리아(220.74) 11.28 92 0
2905335 사실 제가 틀딱이 아니라 귀여운 여자임을 인증합니다 [6] 헬마스터갤로그로 이동합니다. 11.28 126 0
2905332 페이커닮은 개발자 찾습니다 프갤러(106.101) 11.28 62 0
2905331 진짜 크게 벌리는 건 아니고… 그냥 생활비용 차트부자(1.233) 11.28 79 0
2905325 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 92 0
2905324 프로그래머, 내가 하다 하다 3D 공부한다. [3] 프갤러(59.16) 11.28 118 1
2905319 출퇴근길에 소소하게 짭짤하네요 존버장군(1.233) 11.28 94 0
2905316 나 좀 찾지 말아달라고 했음 ㅇㅇ(211.234) 11.28 86 0
2905313 나 아까 실수했네 발명도둑잡기(118.216) 11.28 71 0
2905298 어제부터 저녁에 배가 안 고픔;; [6] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 114 0
2905297 클래스 101 결제해본 사람있나 ㅇㅇ(140.248) 11.28 87 0
2905296 국비 말고 혼자 자격증 따서 취직하는것도 가능함? [1] ㅇㅇ갤로그로 이동합니다. 11.28 124 0
2905294 후 시발 이런건 15분만에 최라락 써서 뚝딱 해야하는건데 프갤러(14.52) 11.28 84 0
2905293 회원가입 겨우 완성했다. 프갤러(14.52) 11.28 83 0
2905292 <서울 자가에 대기업 다니는 김부장 이야기>관련 생각나는 글 발명도둑잡기(118.216) 11.28 150 0
2905291 맨땅에 헤딩하기에는 c가 가장 적절한듯 ㅇㅇ(118.235) 11.28 67 0
2905289 AI 로 뚝딱해서 돈 벌었다는 사람 통장 까봐. [1] 프갤러(59.16) 11.28 80 2
2905288 미디어에서 AI 로 1 분만에 뚝딱 개발했다니까 정말 그런줄 알아. 프갤러(59.16) 11.28 93 1
2905287 프로그래머가 되려면 꿈과 희망을 버려라. [3] 프갤러(59.16) 11.28 112 0
2905283 <우주메리미>가 인기래서 생각나는 예전 글 발명도둑잡기(118.216) 11.28 73 0
2905282 면접문제를 만들어봤다. 프갤러(49.165) 11.28 87 0
2905281 "찬송가 부르고 주식 사"‥ 이불말이는 주가 올리는 '제물' 발명도둑잡기(118.216) 11.28 55 0
2905280 시대의 어르신들이 하나 둘 돌아가시는게 참 먹먹하구낭.. [3] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.28 87 0
2905279 바지가 내려가 넥도리아(223.38) 11.28 79 0
2905278 ■si회사갈거면 포트폴리오 프론트엔드 뭘로하는게 좋냐? [9] ㅇㅇ갤로그로 이동합니다. 11.28 126 0
2905277 Ada 인생 40 년 갈아 넣었습니다. 프갤러(59.16) 11.28 66 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2