디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.09.20 20:28:48
조회 24 추천 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 47352 65
2890995 '에일리 이혼하네 프갤러(112.219) 13:44 2 0
2890994 이제 프로그래밍이 재미없다.. 프갤러(221.165) 13:41 2 0
2890993 돈이 나쁘다고하는 좌빨새끼가 가장 돈에 미친새끼당 By 나님 ♥냥덩이♥갤로그로 이동합니다. 13:30 5 0
2890992 지구가 너무 작아보여 ♥냥덩이♥갤로그로 이동합니다. 13:28 4 0
2890990 갠적으로 학생 동적배포 프로젝트를 난 render로하거든 ㅆㅇㅆ찡갤로그로 이동합니다. 12:44 19 0
2890989 본질에 집중하라 ♥냥덩이♥갤로그로 이동합니다. 12:35 18 0
2890987 ❤✨☀⭐⚡☘⛩나로님 시작합니당⛩☘⚡⭐☀✨❤ [1] Naro갤로그로 이동합니다. 12:29 15 0
2890986 uxui 디자인, 프론트엔드 국비 프갤러(1.215) 12:25 20 0
2890984 피터팬증후군 좌폐아 영포티 ㅠ ♥냥덩이♥갤로그로 이동합니다. 12:07 20 0
2890983 웹3.0시대 언제옴? [1] 타이밍뒷.통수한방(1.213) 12:03 22 0
2890981 ES 모듈을 기본적으로 async/await 패턴을 적극적으로 [2] ㅆㅇㅆ(124.216) 11:54 33 0
2890980 [환상초한전] 제 1장 : 비틀린 스토리 (3) 프갤러(121.172) 11:52 13 0
2890979 불변 배열 매서드를 써라...! ㅆㅇㅆ(124.216) 11:51 20 0
2890978 내가 즃센을 파악한 10년전 뒷통수한방(1.213) 11:48 19 0
2890976 인텔 저전력 모바일 프로세서에 64긱 필요함 ♥냥덩이♥갤로그로 이동합니다. 11:34 25 0
2890975 개발 하지마라 취업 안된다. [6] 프갤러(112.148) 11:30 74 0
2890974 개발자는 왜 RAM을 많이 써야하는거임? [7] ㅇㅇ갤로그로 이동합니다. 11:24 47 0
2890973 나님 자체 리눅스 개발 ♥냥덩이♥갤로그로 이동합니다. 11:02 22 0
2890972 리액트 개발중에 mount unmount mount 호출하는거 [6] 헬마스터갤로그로 이동합니다. 11:02 38 0
2890971 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 10:55 19 0
2890970 돈많은새끼들은 1분만 쇼하고 말장난질해도 100만원이상 버는데 뒷통수한방(1.213) 10:16 23 0
2890969 곧 연휴? 루도그담당(211.184) 09:46 30 0
2890968 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 09:36 27 0
2890967 나 잘래~ ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09:34 18 0
2890966 씨발 이거 뭐야! [2] ㅇㅇ갤로그로 이동합니다. 09:23 46 0
2890965 오늘 쉰다 부럽지 부럽지? 냐하하하 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08:52 23 0
2890963 이름없는 섬 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 08:41 25 0
2890962 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08:37 18 0
2890961 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08:36 27 0
2890959 아침부터 버스에 꾸역꾸역 몰리는거 보니까 화나네 프갤러(218.153) 07:25 21 0
2890958 인지과학조져라 손발이시립디다갤로그로 이동합니다. 06:13 39 0
2890957 누가 더 유명함 올리비아 로드리고 홀란드 디바(59.28) 05:48 38 0
2890956 [정조준210] 제2의 이낙연, 김병기 [1] 발명도둑잡기(118.216) 04:22 34 1
2890955 음기 충전 발명도둑잡기(118.216) 04:09 56 0
2890954 자본주의의 결과인 기후위기가 보험업계를 덮치다 발명도둑잡기(118.216) 04:04 18 0
2890953 디씨에서 두번 검열삭제된 기사 발명도둑잡기(118.216) 03:49 65 0
2890947 현실판 디즈니랜드 왕들 대담 발명도둑잡기(118.216) 03:22 52 0
2890946 노무현 정신 요약.jpg 발명도둑잡기(118.216) 03:13 23 0
2890944 제주 도심에 웬 노란물결?…알고보니 中 '파룬궁' 홍보 발명도둑잡기(118.216) 02:34 22 0
2890942 ‘블랙페이퍼’에서 ‘검은 반도체’로…김은 어떻게 금(金)이 되었나 발명도둑잡기(118.216) 02:22 24 0
2890941 솔직히 사주나 관상 믿는거 진짜 지능 떨어져보임ㅋㅋㅋㅋ 발명도둑잡기(118.216) 02:07 67 0
2890940 박웅규 개인전 <새 몸> 발명도둑잡기(118.216) 01:58 19 0
2890939 오늘의 발명 실마리: 기사나 영상의 관련 지식을 알려주는 도우미 발명도둑잡기(118.216) 01:54 22 0
2890938 트럼프의 미국 국제기구 탈퇴 러쉬..UN 탈퇴까지 추진 발명도둑잡기(118.216) 01:37 19 0
2890937 나한테 약간 있는 TV공포증 발명도둑잡기(118.216) 01:25 21 0
2890934 '백번의 추억' 김다미·신예은·허남준, 다방 미팅 '운명의 짝'은? 발명도둑잡기(118.216) 00:53 28 0
2890933 라면을 씹어먹음?? 면을 입에넣고 오물오물 씹어?? ㅇㅇ(223.38) 00:50 25 0
2890932 트럼프 전략..영구채 강매를 통한 제2의 플라자 협정 발명도둑잡기(118.216) 00:46 24 0
2890931 내일 7시 기상 등교인데 라면먹냐안먹냐진지하다 [2] ㅇㅇ(223.38) 00:44 30 0
뉴스 ‘성폭행 무혐의’ 김건모, 6년 만에 전해진 근황…“먼저 악수 청해” 디시트렌드 09.21
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2