개발자가 되기위한 첫 걸음
예외 처리란?
에러를 잡아내는 데 가장 이상적인 시기는 컴파일을 할 때이다. 그러나 컴파일할 때 모든 에러를 검출할 수 없다.
자바에서의 예외 처리 목표는 규모가 크고 신뢰성 있는 프로그램의 생성을 현재보다 적은 양의 코드를 사용해서 단순화하는 것이며, 또한 애플리케이션에는 미처리된 에러가 없다는 확신을 가지게 하는 것이다.
예외 잡아내기
자바에서 예외의 경우도 다른 자바 객체가 생성되는 것과 같은 방법으로 예외 객체가 생성된다. new를 사용하여 생성되며 힙(heap) 영역에 할당된다. 그 다음에 현재의 실행은 중지되며 예외 객체의 참조는 예외 처리 메커니즘으로 전달된다. 이러한 것을 가르켜 '예외를 던진다'라고 한다. 코드는 아래와 같다.
1 | throw new NullPointerException(); | cs |
던져진 예외를 잡아내는 방법을 알려면 감시영역(guarded region)의 개념을 알아야한다. 감시영역은 예외를 발생시킬 수 있는 코드 영역이다.
Try 블록
메소드 내부에서 예외를 던지면 메소드를 벗어나서 에러처리 매커니즘으로 제어가 넘어간다.
메소드를 빠져나가기 위해 예외를 던지고 싶지 않다면 예외를 잡아내는 블록을 지정해야 한다. 이를 try 블록이라 한다.
그 이유는 예외를 발생시킬 수 있는 다양한 메소드 호출을 '시도(try)'하기 때문이다.
예외 처리기
던져진 예외는 어디선가 종결되어야 한다. 그곳이 예외 처리기이다. try 블록 뒤에 나오며 catch 키워드로 나타낸다.
1 2 3 4 5 6 7 8 | try{ //... }catch(Type1 t1){ //.. }catch(Type2 t2){ //.. } | cs |
예외가 던져지면 그 예외 타입과 일치하는 인자를 가지는 첫 번째 catch문을 예외처리 메커니즘이 찾는다. 일치하는 catch 문 내부 코드를 실행 후 예외처리를 중단한다.
일치하는 catch문 하나만 실행되므로 나머지 case의 실행을 방지하기 위해 각 case 마다 break문을 가지는 switch 문과는 다르다.
예외 명세
1 2 3 | void f() throws TooBig, TooSmall{ //.. } | cs |
Finally 문
마무리
예외는 자바 프로그래밍의 필수 구성 요소이다. 따라서 예외를 사용하는 방법을 잘 알아야 한다. 조금 더 깊게 공부 할 필요가 있으므로 추후 추가 수정.
내용이 도움이 되셨거나 초보 블로거를 응원하고 싶으신 분은 아래 하트♥공감 버튼을 꾹 눌러주세요!
내용의 수정이 있거나 도움이 필요하신 분은 댓글을 남겨주세요!
'Language > Java' 카테고리의 다른 글
람다식(Lamdba Expressions) 정리 (6) | 2019.03.25 |
---|---|
컬랙션 프레임워크란? (0) | 2019.03.20 |
JVM 구조 (0) | 2019.03.07 |
RxJava란? -4 Scheduler (0) | 2019.01.26 |
RxJava - 3 Operators 이어서 (0) | 2019.01.26 |