4. 라이브러리 활용 (3) 예외처리 - 예외API, Throws
** Error(에러)와 Exception(예외) :
1) 에러(Error)란?
- 컴퓨터 하드웨어의 오동작/고장으로 인해 응용프로그램에 이상이 생겼거나 JVM 실행에 문제가 생겼을때 발생하는 것
- 이 경우 개발자는 대처할 방법이 극히 제한적이다
2) 예외(Exception)란?
- 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류
- 예외가 발생하면 프로그램이 종료가 된다는것은 에러와 동일하다.
- 그러나, 예외는 예외처리(Exception Handling)을 통해 프로그램을 종료 되지 않고 정상적으로 작동되게 만들어줄 수 있다.
1. 자바 예외 API
1) 예외처리 객체구조
- throwable 예외 객체의 최상위 객체
- 모든 프로그램적인 오류 객체들은 Exception 상속
2) 예외 발생 원리
- 오류 발생 시 JVM은 해당하는 예외 객체를 생성한다 (Exception)
- 오류 처리를 별도로 하지 않은 상태에서 오류가 발생하면 프로그램이 강제로 종료된다
2. 예외처리 방법
1) try-catch 개념1, 개념2, 예제1
- try{ } 안에 예외처리 대상 코드를 작성한다.
- catch문은 try블록에서 오류가 발생할 경우 처리할 내용을 구현한다.
- catch문의 매개 변수 타입은 처리할 오류의 예외 객체 타입으로 선언한다.
2) finally
- 해당 블록은 try-catch문을 종료할때 항상 수행된다.
- 일반적으로 자원 해제 작업을 구현한다.
3) try-with-resources
- finally 블록에 구현하던 자원 해제 작업을 자동으로 실행하기 위한 것이다
- " try (자동으로 자원 해제할 객체 생성) { 실행문 } "의 형식으로 사용한다
4) 예외처리 메소드
- Exception의 getMessage()는 오류 메세지를 리턴한다
- Exeception의 printStackTrace()는 오류가 발생하기까지의 과정을 역순으로 보여준다
3. throws 선언문
1) 필요성
- throws는 메소드 실행시 발생하는 오류에 대하여 동적으로 오류 처리를 하기위해 사용한다
2) 선언메소드
- throws는 메소드 선언부에 선언하며, throws 다음에는 콤마를 구분자로 예외 객체 이름을 나열한다
- throws가 선언된 메소드를 호출하는 곳에서 throws하는 예외 객체를 처리해줘야 한다
(처리하지 않는 경우 throws 선언을 해야 한다)
4. 사용자 정의 예외 객체
1) 객체 선언
- 사용자 정의 예외 객체를 생성하기 위해 Exception을 상속받아야 한다
2) 객체 사용
- 사용자 정의 예외 객체를 발생하기 위해 사용하는 명령문은 throws이다
일반 예외로 선언 시 : Exception 상속
실행 예외로 선언 시 : RuntimeException 상속