예외를 처리하는 방법
1) try-catch문 (직접 처리)
2) 예외 선언하기 (예외 떠넘기기,알리기)
3) 무시(은폐, 덮기) - 빈 catch문을 넣음
예외 선언
: 메소드가 호출 시 발생가능한 예외를 호출하는 쪽에 알리는 것
( 본인이 처리할 수 있는 일은 처리하지만, 할 수 없는 것은 자신을 호출한 메소드에게 알려줌)
→ 예외를 발생시키는 키워드throw
& 예외를 메소드에 선언할 때 쓰이는throws
를 잘 구별해야함.void method() throws Exception1, Exception2, ExceptionN { //method()를 호출하면 Exception들과 같은 예외가 발생할 수 있다는 것을 알려줌 //메소드의 내용 } void method() throws Exception { // 모든 예외의 최고 조상 → 모든 종류의 예외가 발생 가능 }
⇒ throws 는 필수처리(checked)예외만 선언함. 런타임에러(unchecked)예외는 적지 않음.
finally 블럭
: 예외 발생여부와 관계없이 수행되어야 하는 코드를 넣는다.
try { // 예외가 발생할 가능성이 있는 문장들을 넣는다. } catch ( Exception1 e1) { // 예외처리를 위한 문장을 적는다. } finally { // 예외의 발생여부와 관계없이 항상 수행되어야하는 문장들을 넣는다. // finally 블럭은 try-catch문의 맨 마지막에 위치해야한다. }
↳ try블럭 안에 return문이 있어서 try블럭을 벗어난다 해도, finally 블럭은 실행됨
↳ 작업이 성공하던! 실패하던! 무조건!! 실행해줘야하는 코드를 넣음.
출처
- 자바의 정석 - 기초편 : ch 8- 11~14