예외처리 - f-lab-edu/practice-mall GitHub Wiki
프로그래밍에서는 발생시점에 따라 오류를 크게 3가지로 나뉜다고 한다.
컴파일에러 : 컴파일 시 발생하는 에러
런타임에러 : 실행시에 발생하는 에러
논리적에러 : 실행은 되지만 의도와 다르게 동작
자바에서는 프로그래밍 실행 시에 발생할 수 있는 오류를 에러와 예외 두가지로 구분한다.
에러 : 프로그램 코드로도 수습될 수 없는 오류
예외 : 프로그램 코드로 수습될 수 있는 오류
에러의 경우 메모리부족 (OutOfMemoryError) 나 stackOverflowError 와 같은 에러가 발생하는 경우들이고
예외의 경우 대응 할 수 있는 코드를 작성하므로써 프로그램이 비정상적으로 종료되거나 동작하는 것을 막을 수 있다.
-
Object : 예외와 오류도 객체
-
Throwable클래스 : 오류와 예외 모두 자바의 최상위 클래스 object를 상속받는다.
그 사이에 Throwable 클래스 와 상속관계가 있는데 해당 클래스는 오류나 예외에 대한 메세지를 담는다.
대표적인 메소드로는 getMessage() 와 printStackTrace()메소드가 있다.
-
Exception 클래스 : 자바에서 다루는 모든 예외 오류는 해당 클래스에서 처리하는데 해당 클래스는 컴파일에러와 런타임에러를 한번 더 구분한다. 이는 체크, 언체크로도 분리하여 말한다.
-
체크 예외: RuntimeException을 상속하지 않는 예외들로 Exception 과 그 하위 예외는 모두 컴파일러가 체크하는 체크 예외
-
언체크 예외 : RuntimeException을 상속한 예외들을 말하며, 언체크 예외는 말 그대로 컴파일러가 예외를 체크하지 않는 예외
-
Error
Exception
Checked Exception
Unchecked Exception
RuntimeException : Exception을 확장하여 프로그램 실행 중에 (작동 중에)발생할 수 있는 예외 클래스이다. RuntimeException의 하위 클래스 또한 체크되지 않으며, 체크되지 않은 예외는 메서드나 생성자의 실행에 의해 throw될 수 있고 메서드나 생성자 경계 외부로 전파될 수 있는 경우 메서드나 생성자 의 절에 throws를 선언할 필요 가 없습니다.
예외처리
- try-catch
try{
}catch(Exception e){
}finally{
}