디시인사이드 갤러리

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

갤러리 본문 영역

러스트도 울고 간, Ada 6.5 예외 전파

나르시갤로그로 이동합니다. 2025.09.20 20:28:48
조회 26 추천 0 댓글 0

6.5 예외 전파

예외가 발생했을 때 현재 실행 중인 블록에 해당 예외를 처리할 수 있는 when 절이 없으면, 예외는 소멸되지 않고 자신을 호출한 코드로 전파됩니다. 이처럼 예외가 호출 스택을 거슬러 올라가는 과정을 예외 전파(exception propagation)라고 합니다.

전파 과정

  1. 서브프로그램이나 블록문(declare ... begin ... end) 실행 중 예외가 발생합니다.
  2. 해당 블록의 정상적인 실행은 즉시 중단됩니다.
  3. Ada 런타임은 해당 블록의 exception 처리 구역에서 발생한 예외와 일치하는 when 절을 찾습니다.
  4. 만약 일치하는 when 절이 없으면 (또는 exception 구역 자체가 없으면), 예외는 전파됩니다.
  5. 전파된다는 것은, 현재 블록을 호출했던 지점에서 동일한 예외가 다시 발생하는 것을 의미합니다. 이 과정은 적절한 예외 처리기를 만나거나, 태스크의 최상위에 도달할 때까지 반복됩니다.

예시

다음 코드에서 procedure_bConstraint_Error에 대한 처리기가 없습니다. 따라서 예외가 발생하면, procedure_b를 호출한 procedure_a로 예외가 전파되어 그곳의 처리기가 실행됩니다.

with Ada.Text_IO;

procedure main_example is

  -- procedure_b를 미리 선언하여 procedure_a에서 호출 가능하게 함
  procedure procedure_b;

  -- procedure_b를 호출하는 procedure_a의 구현
  procedure procedure_a is
  begin
    Ada.Text_IO.put_line ("procedure_b를 호출합니다...");
    procedure_b;
  exception
    when Constraint_Error =>
      Ada.Text_IO.put_line ("procedure_a에서 예외가 처리되었습니다.");
  end procedure_a;

  -- 예외를 발생시키는 procedure_b의 구현
  procedure procedure_b is
    x : Integer := 0;
    y : Integer;
  begin
    Ada.Text_IO.put_line ("procedure_b 내부에서 예외를 발생시킵니다...");
    y := 1 / x;
    -- 위의 나눗셈에서 예외가 발생하므로 이 줄은 실행되지 않음
  end procedure_b;

begin
  -- 프로그램 실행을 시작하기 위해 procedure_a를 호출
  procedure_a;
end main_example;

전파의 규칙

예외 전파에는 다음과 같은 두 가지 규칙이 적용됩니다.

1. 선언부에서의 예외

서브프로그램이나 블록의 선언부(예: isbegin 사이)에서 예외가 발생하면, 해당 블록의 exception 처리기는 이를 처리하지 못하고 즉시 상위 실행 문맥으로 전파됩니다.

procedure example is
  -- 선언부에서 Constraint_Error 발생
  n : Positive := 0;
begin
  null;
exception
  -- 이 처리기는 선언부의 예외를 처리할 수 없음
  when Constraint_Error =>
    Ada.Text_IO.put_line ("이 메시지는 출력되지 않습니다.");
end example;

2. 태스크에서의 예외

처리되지 않은 예외가 태스크(task)의 최상위 레벨까지 전파되면, 더 이상 다른 곳으로 전파되지 않고 해당 태스크가 종료됩니다. 자세한 내용은 태스크를 다루는 8.1절에서 다시 설명하겠습니다.


ㅆㅇㅆ은 나에 대한 비방, 모욕 및 명예훼손을 중단하라.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 센터해도 될 것 같이 비주얼 물오른 아이돌 멤버는? 운영자 25/09/22 - -
AD 가전디지털, 액세서리 SALE 운영자 25/09/12 - -
공지 프로그래밍 갤러리 이용 안내 [96] 운영자 20.09.28 47354 65
2891018 소넷 개별로네 [1] 프갤러(211.224) 16:31 5 0
2891017 성실은 기본만큼은 하는것 프갤러(211.234) 16:27 7 0
2891016 성실과 노력의 가치는 안될때도 이악물고 하는것을 얘기하나... ㅇㅇ(223.39) 16:05 11 0
2891015 꿀팁) 친중매국 반미극좌 CIA에 신고하는법 ♥냥덩이♥갤로그로 이동합니다. 16:04 9 0
2891014 <트럼프를 믿는 건 미친 짓> 발명도둑잡기(118.216) 15:58 7 0
2891013 오랜만이다 친구들아 [2] 아스카영원히사랑해갤로그로 이동합니다. 15:46 22 0
2891012 행님들 팅커캐드 학교과제로 하고있는데 코드가 잘 안짜집니다 도움좀 ㅠ [5] 프갤러(223.194) 15:31 58 1
2891010 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 15:06 12 0
2891009 전산직 이직하니 개발은거의 안하네 [1] 프갤러(115.21) 15:05 32 0
2891008 나님 리포스팅된거 3만명 ㄷㅅㄷ ♥냥덩이♥갤로그로 이동합니다. 14:49 22 0
2891007 배뷰르니 노곤노곤 ♥냥덩이♥갤로그로 이동합니다. 14:27 14 0
2891006 무능좌파 이재명 탄핵 ♥냥덩이♥갤로그로 이동합니다. 14:22 20 0
2891005 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 14:22 14 0
2891004 아니 말하는거보면 지식도 부족함..문제가...121.139 점마는 [2] ㅆㅇㅆ(124.216) 14:17 43 0
2891003 121.139 << 이 새끼 이해 안 가는 점 [1] 루도그담당(58.239) 14:11 49 0
2891002 병신끼리 똥꼬나 빨아라 ㅋㅋ [1] 프갤러(121.139) 14:02 45 1
2891001 프로그래밍이 재미없는 이유 프갤러(218.154) 14:01 25 0
2891000 조나단 느그홍 나중에 나라 경기 호황이면 그때 장관하자 뒷통수한방(1.213) 14:01 11 0
2890999 취직의 단점은 자기가 좋아하는 일을 할 수가 없다는게 크지 ㅆㅇㅆ(124.216) 14:01 18 0
2890998 굳이 저새끼 병신임 할 필요 없음 [1] 프갤러(218.154) 13:59 29 0
2890997 121.139 쟤 장애인이라 걍 무시해라 유동아. ㅆㅇㅆ(124.216) 13:57 18 0
2890996 아 맞네 연휴는 즐기고 그만둬야되네 ㅋㅋ 프갤러(218.154) 13:53 20 0
2890994 이제 프로그래밍이 재미없다.. [11] 프갤러(221.165) 13:41 96 0
2890993 돈이 나쁘다고하는 좌빨새끼가 가장 돈에 미친새끼당 By 나님 ♥냥덩이♥갤로그로 이동합니다. 13:30 18 0
2890992 지구가 너무 작아보여 ♥냥덩이♥갤로그로 이동합니다. 13:28 17 0
2890990 갠적으로 학생 동적배포 프로젝트를 난 render로하거든 ㅆㅇㅆ찡갤로그로 이동합니다. 12:44 25 0
2890989 본질에 집중하라 ♥냥덩이♥갤로그로 이동합니다. 12:35 27 0
2890987 ❤✨☀⭐⚡☘⛩나로님 시작합니당⛩☘⚡⭐☀✨❤ [1] Naro갤로그로 이동합니다. 12:29 22 0
2890986 uxui 디자인, 프론트엔드 국비 프갤러(1.215) 12:25 32 0
2890984 피터팬증후군 좌폐아 영포티 ㅠ ♥냥덩이♥갤로그로 이동합니다. 12:07 22 0
2890983 웹3.0시대 언제옴? 타이밍뒷.통수한방(1.213) 12:03 27 0
2890981 ES 모듈을 기본적으로 async/await 패턴을 적극적으로 [2] ㅆㅇㅆ(124.216) 11:54 45 0
2890980 [환상초한전] 제 1장 : 비틀린 스토리 (3) 프갤러(121.172) 11:52 16 0
2890979 불변 배열 매서드를 써라...! ㅆㅇㅆ(124.216) 11:51 26 0
2890978 내가 즃센을 파악한 10년전 뒷통수한방(1.213) 11:48 23 0
2890976 인텔 저전력 모바일 프로세서에 64긱 필요함 ♥냥덩이♥갤로그로 이동합니다. 11:34 34 0
2890975 개발 하지마라 취업 안된다. [9] 프갤러(112.148) 11:30 118 0
2890974 개발자는 왜 RAM을 많이 써야하는거임? [7] ㅇㅇ갤로그로 이동합니다. 11:24 69 0
2890973 나님 자체 리눅스 개발 ♥냥덩이♥갤로그로 이동합니다. 11:02 26 0
2890972 리액트 개발중에 mount unmount mount 호출하는거 [6] 헬마스터갤로그로 이동합니다. 11:02 45 0
2890971 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 10:55 26 0
2890970 돈많은새끼들은 1분만 쇼하고 말장난질해도 100만원이상 버는데 뒷통수한방(1.213) 10:16 25 0
2890969 곧 연휴? 루도그담당(211.184) 09:46 32 0
2890968 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 09:36 35 0
2890967 나 잘래~ ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:34 22 0
2890966 씨발 이거 뭐야! [2] ㅇㅇ갤로그로 이동합니다. 09:23 55 0
2890965 오늘 쉰다 부럽지 부럽지? 냐하하하 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08:52 25 0
2890963 이름없는 섬 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 08:41 27 0
2890962 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08:37 19 0
뉴스 ‘전참시’ 이도, 두 달 앞둔 2026 수능 대비 9월 모의고사 해설 촬영 현장 전격 공개! ‘프로美 뿜뿜’ 디시트렌드 09.21
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2