예외 처리
위키백과, 우리 모두의 백과사전.
(예외처리에서 넘어옴)
예외 처리(例外 處理) 또는 오류 처리는 일반적인 실행의 흐름을 바꾸는 몇 가지 조건을 처리하도록 설계한 프로그래밍 언어의 개념이나 컴퓨터 하드웨어 구조를 말한다.
일반적으로 프로그램이 처리되는 동안 특정한 문제가 일어났을 때 처리를 중단하고 다른 처리를 하는 것을 예외 처리라고 한다.
목차 |
예외의 원인 [편집]
예외의 문제는 보통 다음과 같은 데에서 비롯한다.
- 컴퓨터 하드웨어 문제
- 운영 체제의 설정 실수
- 라이브러리 손상
- 사용자의 입력 실수
- 존재하지 않는 파일 이름 입력
- 숫자값 입력 칸에 일반 문자 입력
- 받아들일 수 없는 연산
- 할당하지 못하는 기억 장치 접근
- 페이지 실패 등
예외 안전 [편집]
메모리 누수, 잘못된 출력, 왜곡된 자료와 같이 코드의 런타임 실패가 악영향을 미치지 않는다면, 이러한 코드를 예외 안전이라고 부른다. 몇 가지 수준의 예외 안전은 다음과 같다:
- 실패 투명성 (no throw guarantee)
- 강력한 불변의 예외 안전 (Commit or rollback semantics)
- 기본 예외 안전 (Basic exception safety)
- 최소 예외 안전 (no-leak guarantee)
- 예외 보증을 하지 않는 안전 (No exception safety)
프로그래밍 언어에서의 예외 지원 [편집]
예외를 눈치채지 못하다가 해당 문제를 실제 동작으로 넘길 경우, 치명적인 문제를 일으킬 수 있다. 이를 막으려면 예외가 일어난 부분을 철저하게 검사해야 한다. 다만 프로그램의 크기가 크다면 일반적인 예외 처리보다 더 많은 기술을 요구할 수도 있다.
C++, 에이다, 자바, 자바스크립트와 같은 프로그래밍 언어는 예외 처리 기능을 포함하고 있다. 이러한 언어에서는 예외 처리를 자동화하고 있다. 예외 처리를 담당하는 핸들러를 찾아 순서대로 콜 스택을 거슬러 올라가 올바른 핸들러를 찾아내면 그 곳에 처리를 맡긴다.
Scheme 언어는 기본적으로 예외를 처리하지 않지만 라이브러리 수준에서 예외를 처리할 수 있다. 표준 규격 SRFI-34에 정의되어 있다.
같이 보기 [편집]
바깥 고리 [편집]
- (영어) 예외 처리의 문제와 이점
- (영어) A Crash Course on the Depths of Win32 Structured Exception Handling by Matt Pietrek - Microsoft Systems Journal (1997)
- (영어) exceptions4c: An exception handling framework for C
- (영어) Another exception handling framework for ANSI/ISO C
|
프로그래밍 구성체 |
|
|---|---|
| 변수 | |
| 자료형 | |
| 제어 분기문 | |
| 반복문 | |
| 함수 | |
| 객체 지향적 문법 | |
| 기타 | |
|
자료형 |
|
|---|---|
| 공통 | |
| 수치 | |
| 플레인 텍스트 | |
| 포인터 | |
| 복합 자료형 | |
| 기타 | |
| 관련 항목 | |