디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.25 13:03:17
조회 111 추천 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/01 - -
AD 루틴 ON! 운동 찐템! 지금 할인 중 운영자 25/11/27 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48833 65
2906588 [애니뉴스] 이 멋진 세계에 축복을 3기 감상 ㅇㅇ(121.172) 10:44 14 0
2906587 잔다 ㅇㅅㅇ [2] 헤르 미온느갤로그로 이동합니다. 09:44 16 0
2906586 어제 출근길..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:08 21 0
2906585 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:00 15 0
2906584 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08:59 17 0
2906583 그래내가키라다 [4] 깃깃갤로그로 이동합니다. 08:39 46 0
2906582 AI 폼 미쳤다리.. [2] 프갤러(123.200) 08:09 40 0
2906581 님들 코딩테스트 필수인가요? [1] 프갤러(121.139) 06:33 46 0
2906580 인지과학조져라 손발이시립디다갤로그로 이동합니다. 06:14 29 0
2906579 ㄹㅇㄹㅇ 개춥 [2] ♥발라당냥덩♥갤로그로 이동합니다. 06:06 44 0
2906578 백준 실버는 원래 쉬운건가? [4] 프갤러(58.76) 05:39 52 0
2906575 쿠팡 자바스프링 쓴지 8년 넘었다 [1] 프갤러(61.75) 04:40 46 0
2906574 에휴.. [2] 프갤러(182.222) 04:15 54 0
2906572 ‘김예지 비하’ 고발당한 감동란, 국민의힘 입당 발명도둑잡기(118.216) 03:48 30 0
2906568 오늘의 영상 기획 실마리: 쇼미더머니 하세요 발명도둑잡기(118.216) 03:27 14 0
2906562 인공지능이 인간의 예술, 음식을 평가, 평론할 수 있을까요? 발명도둑잡기(118.216) 03:13 20 0
2906543 BC 카드 부자 되세요 발명도둑잡기(118.216) 01:42 25 0
2906542 나이 31살이라 코딩포기해야되나 ㅜㅜ [10] 프갤러(211.234) 01:35 104 0
2906541 AI기담|머리가 맛이 가서 의사도 포기 발명도둑잡기(118.216) 01:27 47 0
2906540 유럽, 북미 선진국에서 가장 입학이 어려운 학문 전공!R 프갤러(121.142) 00:59 45 1
2906539 악동뮤지션(Akdong Musician) 크레센도 (Crescendo) 발명도둑잡기(118.216) 00:43 17 0
2906538 일 잘하면 회사에서 겁나 고생한다.. [1] 프갤러(116.126) 00:32 57 0
2906536 “새똥 덩어리 참배” 중국 관영매체, 다카이치 조롱 영상 제작 발명도둑잡기(118.216) 00:13 23 0
2906535 리눅스마스터 1급 합격률 왤케 씹창이냐? 프갤러(220.70) 00:10 35 0
2906534 netcup vps 혜자 ㅇㅇ(219.240) 00:08 31 0
2906532 고졸이 개발자 하고싶으면 어떻게 준비해야함? [1] 프갤러(124.28) 12.04 64 0
2906527 ❤따당이 크리스마스 트리에 예쁜 말 써줘..❤ [1] 따당갤로그로 이동합니다. 12.04 44 0
2906525 오늘의 작명 실마리: 무관심 검열, 무플 검열 발명도둑잡기(118.216) 12.04 16 0
2906523 SNS가 망친 평균 VS 현실 평균 [1] 발명도둑잡기(118.216) 12.04 96 0
2906522 본질적으로 dto와 map의 차이가 없음 [3] 박민준갤로그로 이동합니다. 12.04 148 1
2906521 졸리 졸리 ♥발라당냥덩♥갤로그로 이동합니다. 12.04 54 0
2906519 "예술은 누가 더 나은가의 문제가 아니다" 발명도둑잡기(118.216) 12.04 63 0
2906517 "말썽꾼 아줌마"...다카이치 조롱한 중국 애니메이션 화제 발명도둑잡기(118.216) 12.04 33 0
2906516 html 401 에러뜨면서 사이트 안들어가지는거 어케고침..? 프갤러(125.191) 12.04 22 0
2906515 사이버대라도 학위 따야함?? ㅇㅇ갤로그로 이동합니다. 12.04 36 0
2906514 내란 저지 1주년... "국민의힘 해산해야 민주주의가 바로 선다" 발명도둑잡기(118.216) 12.04 24 0
2906513 ai 시대에 임베디드 배우는 거 어때? [6] 프갤러(223.39) 12.04 89 0
2906512 [1편] 대미투자,원리금 회수도 불가능 발명도둑잡기(118.216) 12.04 21 0
2906510 “새똥 덩어리 참배” 중국 관영매체, 다카이치 조롱 영상 제작 발명도둑잡기(118.216) 12.04 26 0
2906508 [애니뉴스] YxD Ads 개발중 - 완료 ㅇㅇ(121.172) 12.04 21 0
2906507 조갑제 "국민의힘=이적 단체…미치광이 역적 제명도 못한 내란비호당" 발명도둑잡기(118.216) 12.04 23 0
2906505 물건 대여업체는 오히려 손님들이 잃어버려야 이득인건가 [2] 공기역학갤로그로 이동합니다. 12.04 75 0
2906504 눈 올 때 들으면 좋은 노래 snowy [2] 발명도둑잡기(118.216) 12.04 34 0
2906501 Dingux 리눅스 발명도둑잡기(118.216) 12.04 31 0
2906500 SDL / DirectFB / fbdev 를 비교한 성능 발명도둑잡기(118.216) 12.04 26 0
2906488 지잡 취업 가능? [1] 프갤러(121.151) 12.04 53 0
2906486 언어간 호환하려고 gRPC 쓰려다가 웹소켓으로 갈아탐 ㅇㅅㅇ [2] 프갤러(211.234) 12.04 63 0
2906485 안마방 체험 썰.jpg ㅇㅇ(118.235) 12.04 51 0
2906483 [애니뉴스] SortingClp - sortingColorPalette ㅇㅇ(121.172) 12.04 24 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2