디시인사이드 갤러리

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

갤러리 본문 영역

러빨러도 울고 갈, Ada 예외 처리, 6.1 예외 처리의 기본 개념

나르시갤로그로 이동합니다. 2025.09.16 02:20:50
조회 52 추천 0 댓글 0

6. 예외 처리

6.1 예외 처리의 기본 개념

6.1.1 예외란 무엇인가?

Ada에서 예외(Exception)란 프로그램 실행 중 발생할 수 있는 '예외적인 상황'을 의미합니다. 예를 들어, 숫자를 0으로 나누려 하거나 존재하지 않는 파일에 접근하려는 경우가 이에 해당합니다. 이러한 상황이 실제로 발생하는 것을 예외 발생(exception occurrence)이라고 합니다.

이러한 예외적 상황에 대응하는 과정은 예외를 발생시키는(raising) 행위와 이를 처리하는(handling) 행위로 이루어집니다. 예외를 발생시키는 것은 예외적인 상황이 발생했음을 알리기 위해 정상적인 프로그램의 실행 흐름을 의도적으로 포기하는 행위이며, 이때 원래 진행되던 구문의 실행은 그 즉시 중단됩니다. 이렇게 실행이 중단되면, 발생한 예외에 대응하여 특정 동작을 수행하는 처리(handling) 과정이 이어집니다. 이 과정에서 프로그램의 제어권은 사용자가 미리 정의한 예외 처리기(exception handler)로 이전될 수 있으며, 만약 현재 위치에서 처리할 수 없다면 예외는 상위 실행 문맥으로 전파(propagate)될 수 있습니다.

이러한 예외 처리 메커니즘은 오류를 감지하면 정상적인 실행 흐름을 중단하고 예외를 발생시킨 후, 여기에 대응하여 프로그램의 안정적인 실행을 지속하거나 제어된 방식으로 종료함으로써 견고성(robustness)을 향상시킵니다.

6.1.2 예외 처리 모델: 종료 모델

예외 처리 메커니즘은 종료 모델(termination model)재개 모델(resumption model)로 나뉩니다.

  • 종료 모델 (termination model): 예외가 발생하여 예외 처리기로 제어권이 이전되면, 원래 예외가 발생했던 지점으로 돌아가지 않습니다. 예외 처리기의 실행이 끝난 후에는 해당 블록(begin ... end) 다음의 문장으로 실행이 이어집니다. 즉, 해당 블록의 실행은 예외 발생 시점에서 종료됩니다. Ada, C++, Java, Python 등이 이 모델을 사용합니다.
  • 재개 모델 (resumption model): 예외 처리기에서 특정 조치를 수행한 후, 예외가 발생했던 지점으로 돌아가 실행을 재개할 수 있는 모델입니다.

Ada는 종료 모델을 채택하고 있습니다. 예외가 발생하면 해당 코드 블록의 실행은 중단되며, 개발자는 예외 처리기에서 복구 또는 정리 작업을 수행한 후 프로그램의 다음 동작을 제어하는 흐름을 설계할 수 있습니다.

6.1.3 미리 정의된 예외

Ada 언어는 어떠한 컴파일 단위(compilation unit)에서든 바로 사용할 수 있는 4가지 핵심 예외, 즉 Constraint_Error, Program_Error, Storage_Error, Tasking_Error를 미리 정의하고 있습니다. 이 예외들은 Standard 패키지에 선언되어 있어 별도의 withuse 절 없이도 항상 접근 가능하며 프로그램 실행 중 특정 규칙 위반 여부를 확인하는 언어 정의 런타임 검사(language-defined run-time check)가 실패할 때 자동으로 발생합니다. 또한, 프로그래머가 raise 문을 사용하여 이 예외들을 직접 발생시킬 수도 있습니다. 언어 정의 런타임 검사에 대한 자세한 내용은 6.2.1절에서 설명합니다.

6.1.4 예외 선언

Ada에서는 exception 키워드를 사용하여 사용자 정의 예외를 선언(declare)할 수 있습니다. 이 선언은 특정 예외적 상황을 나타낼 고유한 이름을 정의하는 역할을 합니다.

구문 (syntax)

예외 선언의 일반적인 형식은 다음과 같습니다.

<예외_이름_목록> : exception;

<예외_이름_목록>에는 하나 또는 여러 개의 예외 이름을 쉼표로 구분하여 사용할 수 있습니다.

-- 하나의 예외 선언
Singular : exception;

-- 여러 예외를 한 번에 선언
Overflow, Underflow : exception;

선언은 항상 세미콜론(;)으로 끝납니다.

예외 선언의 의미 규칙

예외 선언에는 다음과 같은 의미 규칙이 있습니다.

  • 고유성: 각각의 예외 선언문은 완전히 다른 새로운 예외를 정의합니다. 예를 들어, 서로 다른 두 패키지에 Example_Error라는 이름의 예외가 각각 선언되었다면, 두 Example_Error 예외는 이름만 같을 뿐 서로 다른 별개의 예외입니다.
  • 정적 식별: 예외의 이름이 나타내는 특정 예외는 컴파일 타임에 결정됩니다. 즉, 선언된 예외의 고유한 정체성(identity)은 프로그램이 컴파일될 때 확정되며, 프로그램이 실행되는 동안 이 정체성은 변하지 않습니다.
  • 런타임 효과 없음: 예외 선언문의 정교화(elaboration)1는 런타임에 아무런 효과가 없습니다. 이는 변수 선언 시 메모리가 할당되고 초기화되는 것과는 다른 동작입니다.
  • 제네릭과 예외: 만약 제네릭 유닛 내에 예외가 선언된 경우, 해당 제네릭의 인스턴스를 생성할 때마다 각각의 인스턴스에는 서로 다른 고유한 예외가 있게 됩니다.

  1. '정교화'란, 선언된 항목이 런타임에 처음으로 사용 가능하게 되는 과정을 의미합니다. 자세한 내용은 '5.4 정교화 (elaboration)'를 참조하십시오. 



https://nimfsoft.art/ko/books/ada-programming/#61-%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%AC%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90



추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 군대 예능 출연해 줬으면 싶은 여자 스타는? 운영자 25/09/15 - -
AD 가전디지털, 액세서리 SALE 운영자 25/09/12 - -
공지 프로그래밍 갤러리 이용 안내 [96] 운영자 20.09.28 47321 65
2890564 와 씨발 VB6 회사명 기본값 EXE에 하드코딩 해놨노 ㅋㅋㅋㅋㅋㅋㅋ ㅇㅇ(125.134) 16:18 13 0
2890561 편의점에서 64-- 원 양배추 1800원 1/4 파는데 넥도리아(220.74) 15:55 7 0
2890560 앱히키 웹히키 씨발년아 나대지마라 프갤러(211.246) 15:40 19 0
2890559 일본인들이 한국분들한테 7000만원 쏩니다✨ [1] ㅇㅇ(211.234) 15:38 16 0
2890558 혹시 gstreamer 써본 사람? [1] 프갤러(27.163) 15:33 21 0
2890556 [대한민국] 나무위키에 대해서 프갤러(121.172) 15:26 11 0
2890554 깨달았다. 렉카도 페라리 개조해서 레카하면 가오 안상함 프갤러(211.234) 15:03 15 0
2890553 길가는데 병신 렉카 포터 개조해서 렉카차 만들었네 ㅋㅋㅋㅋ 프갤러(211.234) 15:03 17 0
2890552 파이썬 쉽고 마스터 하는 방법. [1] 프갤러(59.16) 15:02 19 0
2890551 게임핵 근절방법 알았다. [2] 프갤러(211.234) 15:01 25 0
2890550 님들아 파이썬 배우려면 뭐부터해야대나여 [8] ㄴㅇㄹ(112.163) 14:57 29 0
2890549 팔레스타인 = 테러리스트 [1] ♥냥덩이♥갤로그로 이동합니다. 14:55 24 0
2890548 부동산후분양은 금융자본주의 미발달 때문 [1] ♥냥덩이♥갤로그로 이동합니다. 14:39 29 0
2890547 Pd가 만들면 nl이 차지함 [2] ♥냥덩이♥갤로그로 이동합니다. 14:30 28 0
2890546 요즘 게임들 머리좋네 [5] 루도그담당(58.239) 14:24 54 0
2890545 구글코랩 구독 취소 어케하냐 씨발 ㅡㅡ.. ㅇㅇ(106.101) 14:21 25 0
2890544 밀우야 안된다..한투 자동매매만은 하지마라 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 14:19 43 0
2890543 바짓가랑이가 빵구났어요. [6] 볼드오이(121.151) 14:13 31 0
2890542 메세지 방식이 파싱이 없어서 더 빨라서 [3] ㅆㅇㅆ찡갤로그로 이동합니다. 14:13 37 0
2890541 씨발 저능아들 전부다 닥치고 내 말대로 해! [3] 프갤러(110.8) 14:11 40 1
2890540 한국투자증권 api 양식이 전문 방식이네 ㅋㅋ [8] 밀우갤로그로 이동합니다. 14:05 48 0
2890539 화교의 속마음 [1] 프갤러(211.210) 14:00 31 0
2890538 히키 씨발년아 글 보고 있는 거 안다 [2] 프갤러(211.246) 13:48 25 0
2890533 [대한민국] 자유민주주의 - 개념 재설명 프갤러(121.172) 13:13 12 0
2890531 극좌무능 이재명 가짜정부 수준 ㅁㅌㅊ? ♥냥덩이♥갤로그로 이동합니다. 12:58 19 0
2890530 어른이 되어서 수능문제보면 개쉬워보인다는게 이런 느낌인가 [3] 공기역학갤로그로 이동합니다. 12:57 52 0
2890529 여러분 [1] 공기역학갤로그로 이동합니다. 12:56 42 0
2890528 씨발 히키년 글 다 지웠네 ㅋㅋㅋㅋㅋ ㅇㅇ(222.108) 12:52 32 3
2890527 게시판 쇼핑몰말고 신박한거없누 뒷통수한방(1.213) 12:51 13 0
2890526 121.139 점마 211.235 아이피 다중이로 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 12:49 54 0
2890524 어제 Ada 예외 처리 원고 작성하느냐 4시간 나르시갤로그로 이동합니다. 12:43 20 0
2890523 못배워쳐먹은 어른을 [3] 프갤러(49.165) 12:42 44 0
2890522 ㅆㅇㅆ 멘탈 나갈때 행동패턴이 뻔함 ㅋㅋㅋㅋ [1] ㅇㅇ(211.234) 12:41 46 4
2890521 이번에 외주받은게 친구일이라 밤 얻어먹는중 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 12:40 35 0
2890520 조나단 느그홍 나중에 나라 경기 호황이면 그때 장관하자 [1] 뒷통수한방(1.213) 12:37 16 0
2890519 프롬프트허브? 프롬프트마켓? 만들어볼건데 꼬치의달인갤로그로 이동합니다. 12:33 23 0
2890518 ㅈㅇ세번함 [2] 꼬치의달인갤로그로 이동합니다. 12:32 39 0
2890517 욕을 할거면 그냥 배설을 하지 말고 상황설명을 해라 [1] 프갤러(110.8) 12:31 32 2
2890516 히히히 나는 볼드오이 너희들을 무찌르러 왔다 볼드오이(121.151) 12:30 17 0
2890515 1찍 영포티 [3] ♥냥덩이♥갤로그로 이동합니다. 12:22 32 0
2890514 무능극좌 폭동배급견 4050 범죄자세대 [1] ♥냥덩이♥갤로그로 이동합니다. 12:18 21 0
2890512 오락해요.. [6] 뿍뿍이(121.151) 12:10 40 0
2890510 오락해요 뿍뿍이(121.151) 12:01 23 0
2890509 개쓰래기들은 도대체가 [2] 프갤러(49.165) 12:00 42 0
2890507 ㅆ벤져스 어셈블 ㅇㅇ(211.234) 11:50 27 3
2890505 121.139 힘내라 [3] 류류(118.235) 11:44 42 1
2890504 영포티 이 쓰래기들은 [5] 프갤러(49.165) 11:40 55 0
2890503 121.139 관상 보이누 ㅋㅋ [1] 류류(118.235) 11:38 43 2
2890502 121.139 긁히니까 꼬박 꼬박 비추다네 ㅋㅋ 류류(118.235) 11:37 33 1
뉴스 WWD 코리아 10월호, 이효리와 쟈딕앤볼테르 커버 화보 공개 디시트렌드 09.18
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2