디시인사이드 갤러리

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

갤러리 본문 영역

러빨러도 울고 갈, Ada 예외 처리, 6.4 예외 전파

나르시갤로그로 이동합니다. 2025.09.16 02:25:14
조회 42 추천 0 댓글 0

6.4 예외 전파

예외가 발생했을 때 현재 실행 중인 블록에 해당 예외를 처리할 수 있는 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절에서 다시 설명하겠습니다.




https://nimfsoft.art/ko/books/ada-programming/#64-%EC%98%88%EC%99%B8-%EC%A0%84%ED%8C%8C


 


추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 군대 예능 출연해 줬으면 싶은 여자 스타는? 운영자 25/09/15 - -
AD 가전디지털, 액세서리 SALE 운영자 25/09/12 - -
공지 프로그래밍 갤러리 이용 안내 [96] 운영자 20.09.28 47326 65
2890677 답답하다. reset이 초록불일때 정상 부팅 하얀불 무한루프 주황색 점멸 넥도리아(220.74) 00:51 4 0
2890676 좆까십쇼 ㅇㅅㅇ 나 코딩공부합니다 ㅇㅇ... [4] ㅇㅇ(223.38) 00:23 15 0
2890675 여기 정병들 너무 뭐라하지 미라 프갤러(110.8) 00:12 28 0
2890674 파이썬으로 백준 풀고 있는데 나 C프로그래밍 수강해야되는데 ㅇㅇ(106.101) 00:09 17 0
2890673 쯔양 이거뭐냐 ㅋㅋㅋ 야르갤로그로 이동합니다. 00:07 20 0
2890672 집에 남는 컴에 리눅스 깔았다 ㅋㅋ [2] 프갤러(222.110) 09.20 28 0
2890671 나님 탈갤합니당.. [1] ♥냥덩이♥갤로그로 이동합니다. 09.20 26 0
2890670 개멍청한유라 [1] 프갤러(106.102) 09.20 24 0
2890669 멍퀴분쇄기 [2] ♥냥덩이♥갤로그로 이동합니다. 09.20 17 0
2890668 쀼? [2] ♥냥덩이♥갤로그로 이동합니다. 09.20 23 0
2890667 LLM으로 생성한 목차.txt 나르시갤로그로 이동합니다. 09.20 17 0
2890666 여기 갤 망했나욘? [10] zian갤로그로 이동합니다. 09.20 55 0
2890664 입사지원자동화툴(사람인,원띠드) 공유 무43(218.149) 09.20 23 0
2890663 나님 주무시기전 소통⭐+ 질문 받음 [6] ♥냥덩이♥갤로그로 이동합니다. 09.20 36 0
2890661 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ [2] ♥냥덩이♥갤로그로 이동합니다. 09.20 19 0
2890654 나님 긍야즁 [1] ♥냥덩이♥갤로그로 이동합니다. 09.20 20 0
2890652 유튜브 하면 외롭다. 배경음악 다 끄고 방송해야되기 때문 우울해짐. 넥도리아(220.74) 09.20 14 0
2890651 나님 왤케 특별한걸깡.. [1] ♥냥덩이♥갤로그로 이동합니다. 09.20 32 0
2890649 콩쯔가 이미 했던 말 [1] 발명도둑잡기(118.216) 09.20 17 0
2890648 음악 같은거 스폰서로 배경음악으로 깔려면 수익창출 안하고, 어떻게 출첵 넥도리아(220.74) 09.20 10 0
2890647 가장 치명적인 무지는 알고있다는 착각이당 By 나님 [1] ♥냥덩이♥갤로그로 이동합니다. 09.20 24 0
2890646 두둥~ 러스트가 울고 간다는 LLM와 Ada/SPARK 논문 나르시갤로그로 이동합니다. 09.20 14 0
2890645 나님 데자뷰 [1] ♥냥덩이♥갤로그로 이동합니다. 09.20 29 0
2890644 전면 패널 고장났네... 광고 미쳤네. 넥도리아(220.74) 09.20 16 0
2890642 소자 라이팅 콘덴서에다가 핀셋을 가져다 되고 쇼트 그만해야하나. 다 고장 넥도리아(220.74) 09.20 11 0
2890641 Ada 책의 앞부분 목차를 창조하고 있습니다. 나르시갤로그로 이동합니다. 09.20 15 0
2890640 음기 충전 발명도둑잡기(118.216) 09.20 14 0
2890639 ADAMAS Music ost 가 마렵구나. 넥도리아(220.74) 09.20 11 0
2890638 좇센에서 번식한애들한테 하고픈 말 ) 번식 더해줘 이기이기 ㅋㅋㅋ 타이밍뒷.통수한방(1.213) 09.20 14 0
2890637 다음번에 Ada 기초편을 작성하겠습니다. ㅎㅎ 나르시갤로그로 이동합니다. 09.20 16 0
2890635 러스트도 울고 간, Ada 6.9 최적화에 따른 예외 처리 방식의 변화 나르시갤로그로 이동합니다. 09.20 15 0
2890634 요즘 불안의 근원 규소기반 생명체 발명도둑잡기(118.216) 09.20 21 0
2890633 러스트도 울고 간, Ada 6.8 런타임 검사 억제 나르시갤로그로 이동합니다. 09.20 20 0
2890632 러스트도 울고 간, Ada 6.7 단언(assertion)과 예외 나르시갤로그로 이동합니다. 09.20 13 0
2890631 러스트도 울고 간, Ada 6.6 Ada.Exceptions 패키지 나르시갤로그로 이동합니다. 09.20 17 0
2890630 러스트도 울고 간, Ada 6.5 예외 전파 나르시갤로그로 이동합니다. 09.20 13 0
2890628 러스트도 울고 간, Ada 6.4 반환값 생성을 위한 예외 처리 나르시갤로그로 이동합니다. 09.20 11 0
2890627 q=usb+pin+map 넥도리아(220.74) 09.20 13 0
2890626 바질 소세지 뭔 맛으로 먹냐? 비릿해서... [2] 나르시갤로그로 이동합니다. 09.20 30 0
2890624 사과를 세워서 자르지 마세요! 그동안 모두 잘못 알고 있었습니다 발명도둑잡기(118.216) 09.20 15 0
2890622 아 피자먹고싶다 [7] 루도그담당(58.239) 09.20 46 0
2890621 씨이이이발 개발자용 ai 따로내달라고 [2] 뉴진파갤로그로 이동합니다. 09.20 55 0
2890620 이게 외주 생활자는 고정거래처 없으면 좀 힘들긴함 [7] ㅆㅇㅆ(124.216) 09.20 59 0
2890619 나도 외주 뛰어들까 하는데 [2] 프갤러(211.234) 09.20 47 0
2890618 프갤에 이거 갖고 있는 사람 있는 듯 발명도둑잡기(118.216) 09.20 22 0
2890617 좇센에서 번식한애들한테 하고픈 말 ) 번식 더해줘 이기이기 ㅋㅋㅋ 뒷통수한방(1.213) 09.20 23 0
2890613 아휴 돈 벌기 힘드네.. [3] 나르시갤로그로 이동합니다. 09.20 37 0
2890612 [냥덩단상] 채식주의자 [3] ♥냥덩이♥갤로그로 이동합니다. 09.20 45 0
2890611 배 아파서 5분 전에 화장실 들어왔다 [3] 발명도둑잡기(118.216) 09.20 37 0
뉴스 ‘옥탑방의 문제아들’ 법의학자 유성호, 진솔하고 담담하게 전한 ‘죽음’의 모든 것! 디시트렌드 09.19
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2