1. 예외 (Exception) 이란?
ㅇ 특정 상황을 짐작케 하는 오류와는 달리, 예상치 못한 다양한 상황 발생에 대처할 수 있게 하는 것
- 정상적인 처리 상태에서 벗어난 다양한 비정상 상태들
. 例) 잘 동작하던 서비스가 갑자기 정지하거나,
디스크 부족 현상이 나타나거나,
미리 정해지지 않는 시간에 발생되는 인터럽트 등
- 하드웨어 및 소프트웨어 상황 모두 포함
ㅇ 예외 역할
- 프로그램 수행 정지와 같은 상황을 알려주고 이에 대처
. 오류가, 특정 상황 마다, 오류 메세지 출력 및 수행 중단(강제 종료) 시키는 것과 달리,
. 예외는, 오류 상황 마다 그에 맞는 처리를 할 수 있게 함
- 때론, 프로그래밍을 유연하게 할 수 있는 도구 역할도 함
2. [프로그래밍] 예외 처리 (Exception Handling), 에러 처리 (Error Handling) 기능
ㅇ 예외 처리 (Exception Handling)
- 시스템의 신뢰도 향상을 위해,
- 프로그래밍 언어에서 프로그램의 실행 도중 발생하는 예외상황을 발생,처리할 수 있게 하는 기능
. 예외처리 능력 없는 언어 例) 과거 FORTRAN, PASCAL 등
. 예외처리 능력 있는 언어 例) 미국방성의 Ada, C++, Java 등
. Java 경우, 에러가 생겼을 때, 항상 예외를 발생시켜, 예외 처리로 모든 상황 대처 가능
. PHP 경우, 예외 이외에 추가적으로 더 복잡한 형태의 에러 처리를 하기도 함
ㅇ 예외 처리기 (Exception Handler)
- 예외가 탐지되었을 때 만 실행되는 일종의 서브프로그램
3. [프로그래밍] 예외 탐지 및 처리 例)
ㅇ 예외 탐지 및 처리 (try ... catch ... finally 문)
- (구조)
try { 예외 발생 가능성이 있는 블록 구문 }
catch (예외 타입) { 예외 처리 }
finally { ... }
- (설명)
. 만일, try 블록 내 예외 발생시, 즉각 이를 탐지하여 catch 구문을 실행
. 따라서, try 블록 내 예외 발생 지점 이후 코드는, 실행하지 않게됨
. 한편, finally 블록은, 예외 처리 여부에 상관없이 항상 한번 만 실행됨
- (장점)
. try ... catch ... finally 문으로 에러를 처리하면,
. 프로그램이 강제로 종료되지 않게하면서,
. 예외적인 에러 상황 마다 적절히 대응 가능
ㅇ 한편, 명시적/의도적으로 예외를 발생시키려면,
- 예외 미발생시에도, try 블록 내에서,
- 명시적으로 throw 구문을 사용하면,
. 例) throw Error("...");
- catch 블록이 실행됨
4. [프로그래밍] 가능한 예외 또는 에러 상황들
ㅇ SyntaxError : 문법 에러
ㅇ ReferenceError : 참조 에러
ㅇ TypeError : 타입 에러
ㅇ RangeError : 값 허용 범위 벗어난 에러
ㅇ Error : 기타 일반적인 에러 등