디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.25 13:03:17
조회 88 추천 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 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48791 65
2905461 사람인하고 점핏하고 다른 회사임? ㅇㅇ(182.228) 16:25 6 0
2905460 경력 1년이상, 3년이상 뽑는 회사 ㅇㅇ갤로그로 이동합니다. 16:13 16 0
2905456 유관순은 3.1운동할 때 인공기 흔들었냐? chironpractor갤로그로 이동합니다. 15:53 15 0
2905454 중·일 갈등 ‘패싱’ 미국에···일본은 불안하다 발명도둑잡기(118.216) 15:29 12 0
2905453 ‘한미일 vs 북중러’ 구도 위험성 더 커진다 [2] 발명도둑잡기(118.216) 15:21 13 0
2905452 이젠 뭐가 ai이고 진짜인지 분간이 잘 안 간당.. [4] ♥멘헤라냥덩♥갤로그로 이동합니다. 15:20 41 0
2905451 밤에도 못 자고 일하니까 출생률이 떨어지는 것이다 [1] 발명도둑잡기(118.216) 15:13 17 0
2905450 윤석열 “전한길은 하나님이 한국에 보낸 선물” 옥중 편지 발명도둑잡기(118.216) 15:06 11 0
2905448 '아쉽다. 뽀뽀'…부하 여경 손 깍지·허리 감싼 경찰관 유죄 확정 발명도둑잡기(118.216) 15:01 9 0
2905447 美서 의미 퇴색한 '블프 세일'…"행사 진정성 사라져" 발명도둑잡기(118.216) 14:56 11 0
2905446 '케네디家' 끝없는 비극?…35살 외손녀 시한부 판정 발명도둑잡기(118.216) 14:53 13 0
2905445 5억짜리 ‘인간 세탁기’ 발명도둑잡기(118.216) 14:50 14 0
2905444 노동장관 "해 뜨면 일하고 해 지면 휴식. 야간 노동자 사망' 쿠팡 발명도둑잡기(118.216) 14:47 9 0
2905441 젤렌스키, 러시아 침공전 방어체제 이끈 '분신' 잃었다 발명도둑잡기(118.216) 14:39 15 0
2905440 회사다니면서 우울증 생겼는데.. [16] ㅇㅇ(1.244) 14:16 70 0
2905437 기분 좋은 주말이다 RyuDOG갤로그로 이동합니다. 13:47 17 0
2905436 [대한민국] 국힘 책임당원 일동 입장문 ㅇㅇ(121.172) 13:45 13 0
2905435 와 로리 슬렌더 알몸 ㅇㅅㅇ [2] 류류(121.160) 13:20 49 1
2905432 이마트가즈아 넥도리아(223.38) 12:45 14 0
2905431 나 한동훈 인간적이어서 좋아했습니다. 넥도리아(223.38) 12:41 21 0
2905430 고인모욕이 비도덕적 반인륜적인건 아는데 [1] 류류(118.235) 12:19 33 1
2905429 내년부터 4.5일제 강행이야 ㅇㅅㅇ? 류류(118.235) 12:16 18 0
2905428 내냔 상반기 ㄹㅇ 존나 바쁠거 확정임 ㅅㅂ [2] ♥멘헤라냥덩♥갤로그로 이동합니다. 12:14 46 0
2905427 ㅆㅇㅆ뒤지니까 류독이 또 나와서 나대네 ㅇㅅㅇ 류류(118.235) 12:09 24 1
2905426 이태원 피떡갈비 ㅇㅅㅇ 류류(118.235) 11:57 25 0
2905425 뭔가 있어보이는 Ada 코딩법 ㅋㅋ 나르시갤로그로 이동합니다. 11:39 24 0
2905424 책 사는거 이거 맞는건가? [2] 넥도리아(220.74) 11:38 48 0
2905420 주술회전 최신화 ♥멘헤라냥덩♥갤로그로 이동합니다. 11:04 21 0
2905419 Watsn.ai - 최첨단 AI 구라 탐지기 만들어 봤다 Watsn(47.230) 10:47 22 0
2905418 이태원 모욕죄로 벌금100 너무 분하고 억울하다.. 이딴걸로 전과라니; [3] ㅇㅇ(39.7) 10:31 49 1
2905414 오늘자 민주주의 파괴 진척 경과 현황 [5] chironpractor갤로그로 이동합니다. 09:44 43 0
2905413 저장용 ♥멘헤라냥덩♥갤로그로 이동합니다. 09:40 18 0
2905410 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥멘헤라냥덩♥갤로그로 이동합니다. 08:13 24 0
2905409 내가 만나고 싶은 여자 이상형 적어봄.txt [1] ㅁㅁㅅ갤로그로 이동합니다. 08:06 34 0
2905407 이직하려면 여기서 어떤부분을 좀더 집중하는게 좋을까? [6] 프갤러(58.76) 07:30 53 0
2905406 평론가, 평론의 중요성, 필요성, 위대한 평론 등이 잘 드러난 작품 발명도둑잡기(118.216) 07:16 62 0
2905405 인지과학조져라 손발이시립디다갤로그로 이동합니다. 06:29 51 0
2905403 프랑스의 쓰레기방지법과 유럽의 '그린 뉴딜' 발명도둑잡기(118.216) 05:32 15 0
2905398 CUDA 때문에 절대 안된다? 구글 TPU 사태의 본질, 엔비디아가 급해 발명도둑잡기(118.216) 04:36 42 0
2905397 공원 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 04:11 24 0
2905396 태연 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 04:10 27 0
2905395 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 04:08 53 0
2905394 7,000명이 호흡할 공기를 걸러낸다고? 도심 한복판에 '이끼'를 발명도둑잡기(118.216) 04:08 24 0
2905393 국내에서 네카라쿠배 위에 어떤 회사들 있음? 프갤러(1.229) 03:49 22 0
2905391 초월지능신교 來世 經文 프갤러(49.165) 03:06 29 0
2905389 지식in 조회수만 도전해봅니다. 넥도리아(220.74) 03:06 31 0
2905388 초월지능신교의 교리와 경전 그리고 기도문 프갤러(49.165) 03:02 30 0
2905387 초월지능신교 경문 프갤러(49.165) 03:01 23 0
2905386 이제 사이비종교를 만들 때다. 프갤러(49.165) 03:00 29 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2