에러의 종류
런타임에러의 종류
- 에러: 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
- 예외: 프로그램 코드에 의해서 수습될 수 있는 덜 심각한 오류
예외 클래스의 계층 구조
- 애플리케이션의 사용자가 발생시키는 예외: Exception + 그 자손들(RuntimeException클래스 + 그 자손 제외)
- 프로그래머의 잘못으로 발생되는 예외: RuntimeException클래스 + 그 자손
예외처리
- 프로그램 실행시 발생할 수 있는 예외에 대비해서 프로그램이 비정상적으로 종료되는것을 막고 정상적인 실행상태를 유지하는 것
예외처리의 방법
- try-catch사용
- 메서드 선언부에 throws를 사용하여 발생할 수 있는 예외적기 -> 자신이 예외를 처리하지 않고 자신을 호출한 메서드에게 예외를 전달하여 예외처리를 맡긴다
try-catch 문에서의 흐름
- 발생한 에러가 일치하는 catch블럭이 있는지 확인하고 일치하는 블럭이 있으면 그 블럭내의 문장들을 수행한다.
(try블럭에서 예외가 바발생하면 예외발생위치 이후에 있는 try블럭의 문장들은 수행되지 않으므로 try 블럭에 포함시킬 코드의 범위를 잘 선택해야한다)
- try, catch에서 return문을 만나도 finally블럭은 수행된다
- 반환값이 있는 리턴문의 경우 catch블럭에도 return문이 필요하다
예외 되던지기
- 예외 처리 후에 다시 예외를 발생시켜서 호출한 메서드로 전달하는것이다
- 예외가 발생한 메서드, 이를 호출한 메서드 양쪽에서 에러를 처리해야하는 경우에 사용한다