디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.09.16 02:25:14
조회 50 추천 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/22 - -
AD 가전디지털, 액세서리 SALE 운영자 25/09/12 - -
2889707 범죄자 새끼들 나보다 잘먹는거 실화냐? - 식단 [4] 프갤러(175.197) 09.17 105 0
2889706 개인용 서버 어떤거 만들어 놓으면 재밌게 가지고 놀 수 있음? [2] 프갤러(222.110) 09.17 82 0
2889705 아 씨빨 치킨 왜안와 씨빨!!!!!!!!!!!!!!!!!!!!!!!!!! 프갤러(121.139) 09.17 56 0
2889704 치킨 왜안오냐 씨발 배고픈데 프갤러(121.139) 09.17 48 0
2889703 ㅆㅇㅆ = it 노가다 페지 인생~ 프갤러(121.139) 09.17 88 5
2889702 치킨 시켰다 ㄱ ㅐ새기들아. 프갤러(121.139) 09.17 51 1
2889701 바이브코딩 다좋은데 공연공지 안된거 만들라 시키면 지옥임 [1] 프갤러(118.33) 09.17 84 0
2889700 오늘 총수입은 33만원에 외주 4만원 해서 29만원 범 ㅆㅇㅆ(124.216) 09.17 76 0
2889699 회사가 얼마나 개판이면 비개발직군한테 바이브코딩을 시험볼까 싶기도하고 ㅆㅇㅆ(124.216) 09.17 67 0
2889698 임마누엘 토드의 문명학적 결론, "의로운 길에서 벗어나는 자는 구원받지 발명도둑잡기(118.216) 09.17 63 0
2889697 오늘 열리는게임 바로 탑승해라 ㄱㄱㄱㄱㄱㄱㄱ 프갤러(183.103) 09.17 55 2
2889696 요즘은 기획인데도 바이브 코딩 회사서 시험본다더라 [3] ㅆㅇㅆ(124.216) 09.17 82 0
2889694 오늘 대기업 현직자한테 회사서 바이브 코딩하는 방법 필요하다고 의뢰가 옴 ㅆㅇㅆ(124.216) 09.17 98 0
2889693 신규게임 같이 ㄱㄱㄱㄱㄱㄱㄱ 프갤러(183.103) 09.17 43 0
2889691 커피 한잔 원가 111원.jpg [10] 야옹아저씨갤로그로 이동합니다. 09.17 289 5
2889689 폴킴 (Paul Kim) ‘오늘 밤 (yours)’ 발명도둑잡기(118.216) 09.17 50 0
2889688 MCP 납품해서 3만원 받음 [2] ㅆㅇㅆ(124.216) 09.17 93 0
2889687 오늘의 소설, 영화 실마리: 개나 고양이 종족 외계인이 지구 침공해 해방 발명도둑잡기(118.216) 09.17 44 0
2889685 근데 왜 백앤드가 더 어렵다는거임? [4] ㅇㅇ(220.122) 09.16 105 0
2889683 윤석열 이름 새겨진 국가유공자증서 버리겠다는 후손들 발명도둑잡기(118.216) 09.16 48 0
2889682 美경제학자 “트럼프에 488조원 상납? 차라리 한국 기업에 돈 주는 게 발명도둑잡기(118.216) 09.16 55 0
2889681 깨달았다. 집에선 뭐가 안된다. 프갤러(110.8) 09.16 51 0
2889679 비갸 왔네... 대구 콘텐츠페어 가면 코그 면접가능? 넥도리아(223.38) 09.16 55 0
2889678 저번 달에 썼던 미국의 양당정치 스펙트럼 발명도둑잡기(118.216) 09.16 39 0
2889677  C#백엔드인데 [8] 프갤러(39.117) 09.16 131 0
2889675 솔루션 업체면 하는 일이 머임? 프갤러(140.248) 09.16 57 0
2889674 알 만한 사람은 다 아는 유명한 디스곡 발명도둑잡기(118.216) 09.16 54 0
2889672 맥주 660미리 먹었는데 봉지라면 vs 컵라면 뭐먹음?? 총각김치랑 먹음 [3] ㅇㅇ(223.39) 09.16 54 0
2889670 우리집에 피닉스가 왔다 발명도둑잡기(118.216) 09.16 45 0
2889668 이수현 중도보수 민주당 지지자 인터뷰 발명도둑잡기(118.216) 09.16 47 0
2889666 조규찬 7집 - 마지막 돈키호테 발명도둑잡기(118.216) 09.16 34 0
2889665 일하면서 ai 쓰지말라고 공지내려왔다.. [3] cvs.갤로그로 이동합니다. 09.16 106 0
2889664 오늘의 영상 기획 실마리: 지하철 안에서 잠 자는 뮤직비디오 발명도둑잡기(118.216) 09.16 45 0
2889662 20년 전, 미국의 쇠퇴를 예견한 에마뉘엘 토드, '서구의 패배'를 다시 발명도둑잡기(118.216) 09.16 60 0
2889661 맥주 한잔 하고 먹는 라면에 총각김치 왜이렇게 맛있냐?? ㅇㅇ(223.39) 09.16 36 0
2889658 이 사람 아이피 팔도중에 어디임 서울경기 강원 대구 전라도 경상도 중에 프갤러(115.139) 09.16 49 0
2889654 파이썬 잘 아는사람 있음 ㅇㅅㅇ?? 학기문제 알려줘 [4] ㅇㅇ(223.39) 09.16 81 0
2889653 포폴용 [7] ㅇㅇ(125.205) 09.16 84 0
2889650 컴퓨터 파워도 같이 보내면 어쩔까 삼성 파워, 메인보드 시디도 같이 넥도리아(119.195) 09.16 74 0
2889649 ‘케데헌’은 왜 한국이 아닌 미국에서 만들어졌을까 발명도둑잡기(118.216) 09.16 47 0
2889648 Best of Ki-jung | Parasite 발명도둑잡기(118.216) 09.16 36 0
2889647 ❤✨☀⭐⚡☘⛩나로님 퇴근합니당⛩☘⚡⭐☀✨❤ Naro갤로그로 이동합니다. 09.16 46 0
2889646 "처음부터 끝까지 그냥 쓰레기"... 자기 작품을 설명한 예술가의 본심 발명도둑잡기(118.216) 09.16 36 0
2889645 진지하게 주식을 못해서 평생 가난하게 살 확률이 존재하냐?? [2] ㅇㅇ(223.39) 09.16 78 0
2889644 술이 너무 먹고싶다 [1] 주아갤로그로 이동합니다. 09.16 62 0
2889643 새소리 스펙트럼 분석 발명도둑잡기(118.216) 09.16 36 0
2889641 담배 약 술 주아갤로그로 이동합니다. 09.16 44 0
2889640 논문 초록 읽어봤는데 대강 이런 원리라네 [1] ㅆㅇㅆ(124.216) 09.16 140 0
2889638 이제 배달을 빛의 속도로 받을 수 있는거냐? [1] 루도그담당(58.239) 09.16 64 0
2889636 다익스트라 알고리즘은 모든 노드에 대해서 들렀을때 최단거리 아녔나 [2] ㅆㅇㅆ(124.216) 09.16 103 0
뉴스 '마리와 별난 아빠들' 하승리-현우-박은혜-류진-황동주-공정환, 6인 포스터 공개! 디시트렌드 14:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2