발생시점에 따라 컴파일 에러와 런타임 에러로 나뉜다.
컴파일 에러 : 컴파일할 때 발생하는 에러
런타임 에러 : 프로그램 실행 도중에 발생하는 에러
런타임 에러가 두개로 나뉘어진다.
error: 일단 발생하면 복구할 수 없는 심각한 오류.
exception : 발생하더라도 수습될 수 있는 비교적 덜 심각한 것
error는 프로그램의 비정상적인 종료를 막을 수 없다.
exception은 대처할 수 있는 코드를 작성함으로써 비정상적인 종료를 막을 수 있다.
정의: 프로그램 실행시(runtime) 예외의 발생에 대비한 코드를 작성하는 것
목적: 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것
Checked Exception == RuntimeExcepion
-> 프로그래머의 실수로 발생하는 예외
Unchecked Excepion == 나머지 exception
-> 사용자의 실수와 같은 외적인 요인에 의해 발생되는 예외
RuntimeException은 예외처리를 해주지 않아도 컴파일할 때는 문제되지 않는다.
class이기 때문에 throwable 역시 Object를 상속받는 것을 알 수 있다.
throws는 예외를 처리하는 것이 아니다.
호출한 메서드에게 예외를 전달하여 예외처리를 미루는 것이다.