-
정상적인 실행을 방해하는 기대하지 않은 에러.
-
Example
- Array Index of Bounds
- Null Point Exception
-
Exception vs Error
- Try to Catch로 Handle이 가능하면 Exception.
- Try to Catch가 불가능하여 프로그램이 멈추면 Error.
-
Causes
- User Error - 잘못된 입력
- Programming Logic Error - 알고리즘, 구현체
- Physical Resource Failure - 메모리, 디스크
- External System Defect - 외부 연동 시스템
- Others
-
Examples
- Invalid Input Data
- File to be opened: NOT FOUND
- Network Connection Lost
- JVM Run Out of Memory
- Others
-
Objective
To Catch, 예외를 잡으면 정상적인 흐름으로 돌아가도록 한다.
-
Advantages
- 안정적이고 신뢰도가 높다.
- 의도한 기능 Code와 Error-handling Code를 분리할 수 있다.
- Error Reporting에서 Call Stack of Methods, 예외 처리 메소드를 순차적으로 쌓아 구조적으로 작동되게 한다.
-
Checked Exception
컴파일할 때, 컴파일러가 확인하는 예외.
-
Unchecked Exception
Runtime에 가야 알 수 있는 예외.
-
Error
앱 외부에서부터 문제가 생기는 경우.
내부에서 할 수 있는 행동이 많지 않다.
-
Runtime Exception
앱 내부에서 문제가 생기는 경우.
내부에서 해결할 수 있다.
-
-
Catching Exception
Try-Catch Block을 사용한다.
-
Syntax
try { // Prootected Code } catch (ExceptionType1 e1) { // Catch Block } catch (ExceptionType2 e2) { // Catch Block } catch (ExceptionType3 e3) { // Catch Block }
-
Example
-
Throws/Throw Keywords
Checked Exception이 아니라면, Method는
throws
키워드를 이용한 선언이 필요하다.throws
키워드는 발생한 예외의 처리를 해당 메소드를 호출한 쪽으로 위임할 때 사용한다. 예외를 처리하는 키워드이다.throw
키워드는 프로그램 내에서 임의로 예외를 발생시킬 때 사용한다. 실제로 예외를 발생시키는 키워드이다. -
Finally Block
예외가 발생하든 안하든 무조건 실행된다.
Cleanup-type Statements를 위해서 넣는다.
-
Example 2