Class10(예외 처리)
2023. 01. 13. 수업내용 정리
예외
- 예외(Exception)를 포함하는 자바 언어에서 발생할 수 있는 모든 오류의 타입은
Throwable(java.lang.Throwalbe) 클래스를 상속받는 모든 것들을 의미한다.
예외의 구조

throws,thorw,catch대상이 되는 모든 타입(혹은 객체)은java.lang.Throwable을 상속 받는다.java.lang.RuntimeException을 상속받는 모든 예외(Exception)는 빌드(Build) 전까지 예외 스코프 및 유효성 검사를 하지 않는다.- 그런 이유로
java.lang.RuntimeException을 상속 받는 모든 예외를 언체크(드) 예외(Unchecked Exception, 확인되지 않으 예외)라고 하며,java.lang.RuntimeExceptino을 상속 받지 않는 모든 예외를 체크(드) 예외(Checked Exception,확인된 예외)라고 한다. java.lang.Error및 이를 상속 받는 모든 에러(Error)는 직접 상속 받아 사용하지 않는다.
메서드 예외 시그니처
- (8) 메서드 파일 참고
예외 발생시키기
- 고의로 어떠한 예외를 발생시키고자 할 때 아래와 같이 사용할 수 있다.
thorw [예외 객체]; //Exception은 곧 타입이므로 변수 처럼 사용가능..가령,
java.lang.Exception타입의 예외를 발생 시키기 위해 아래와 같이 실행할 수 있다.throw new Exception("예외 메세지"); throw키워드를 사용하여 예외를 발생시킬 경우 해당 위치에서 즉시 해당 메서드 실행이 중단되고 호출자로 실행점이 넘어간다.retrun처럼.
예외 처리하기
- 특정 코드를 실행하면서 발생할 수 있는 예외가 발생했을 경우 오류를 일으키며 종료하는 것이 아니라, 내가 원하는 예외 로직을 실행하기 위해 사용한다.
try{ // 예외가 발생할 가능성이 있는 코드 // try{} 구현부 실행 중 예외가 발생한 구문에서 바로 catch{} 구현부의 실행점으로 옮겨감에 유의한다. } catch([처리할 예외 선언]){ // 예외가 발생했을 경우 실행할 코드 // 위 try {} 코드를 실행하며 예외가 발생하지 앟을 경우 catch{} 구문이 실행되지 않음에 유의한다. } finally { // try{} 구문이 예외 없이 성공적으로 실행이 되든, 예외가 터져서 catch{} 구문이 실행되든 반드시 실행함을 보장 받을 구문 // try{} 및 catch{} 구현부와 달리 생략할 수 있다. // finally{} 구현부를 사용하고자 할 때에는 반드시 try-catch 문의 가장 마지막에 적는다. }하나의
try문 안에서 발생할 수 있는 예외가 여러개이고, 각 오류에 대해 다른 로직을 실행하고자 할 때 아래와 같이catch를 여러개 사용할 수 있다.try{ } catch([처리할 예외 A 선언]){ } catch([처리할 예외 B 선언]){ } catch([처리할 예외 C 선언]){ } finally { }단, 선행하는 에외의 타입이 후행하는 예외읭 타입보다 부모여서는 안된다.
Try With Resource
- Try With Resource는
try문 실행 종료시(catch종료 포함) 모든 경우에AutoCloseable(java.lang.AutoCloseable) 인터페이스를 구현하는 객체의close()메서드를 호출하는 것을 보장한다. - 주로 JDBC(Java Database Connector) 개발시 JVM과 DBMS간의 연결 객체가 닫히지 않아 Connection Leakage(Leak)가 발생, 어느 시점부터 JVM에서 DBMS로 연결하지 못하는 사고를 방지하기 위해 사용한다.
try([AutoCloseable을 구현하는 객체]){ } ...
댓글남기기