1. 예외(Exception)
- 실행시간에 발생하는 에러(Run-Time Error)로서 프로그램의 비정상적인 종료, 잘못된 실행결과, 메소드의 호출과 실행, 부정확한 데이터, 그리고 시스템 에러 등 다양한 상황에 의해 야기
- 시스템 정의 예외(System-Defined Exception) : 프로그램의 부당한 실행으로 인해 시스템에 의해 묵시적으로 일어나는 예외
ArithmeticException | 산술 연산 시 발생하는 예외 |
IndexOutOfRangeException | 배열, 스트링, 벡터 등과 같이 인덱스를 사용하는 객체에서 인덱스의 범위가 벗어날 때 발생하는 예외 |
ArrayTypeMismatchException | 배열의 원소에 잘못된 형의 객체 배정시 발생하는 예외 |
InvalidCastException | 명시적 형 변환이 실패할 때 발생하는 예외 |
NullReferenceException | null을 사용하여 객체를 참조할 때 발생하는 예외 |
OutOfMemoryException | 메모리 할당(new)이 실패하였을 때 발생하는 예외 |
- 프로그램 정의 예외(Programmer-Defined Exception) : 프로그래머에 의해 의도적으로 야기되는 프로그래머 정의 예외
2. 예외 처리(Exception Handling)
- 예외처리 : 기대되지 않은 상황에 대해 발생된 예외를 적절히 처리
- 예외도 하나의 객체로 취급하므로 먼저 예외를 위한 클래스를 정의해야 함
- 예외를 명시적 발생시 예외처리기가 반드시 필요하며 예외에 관련된 메시지를 스트링 형태로 예외 객체에 담아 전달
예외처리 구문형태
try { // "try블록"}
catch (ExceptionType identifier) {
// "catch블록"}
catch (ExceptionType identifier) {
// "catch 블록"}
finally { // "finally 블록" }
↑↑ 예외처리기 실행 순서
1. try 블록 내에서 예외가 발생되거나 명시적으로 예외 발생
2. 해당하는 catch 블록을 찾아 처리
3. finally 블록 실행