예외처리
더 보면 좋은내용)Annotation

순서는 위 방식과 같이 흘러간다.
모든 예외는 Throwable을 상속한 클래스이다!
(자바에서는 원시타입을 제외하면 모두 객체이다)
예외도 new로 만드는 객체이고 따라서 상속 관계가 존재한다

Error와 Exception은 반드시 구분할 필요가있다!
앞서 사전캠프에서 배웠듯이 예외에는 두 가지가 있다
체크예외와 언체크예외(RuntimeException)
checked예외 ? 컴파일러가 물어봄 처리를 강제한다는 것
RuntimeExcption 예외는 모두 Uncheked이다!

try문 안에서 예외가 발생하면 예외가 발생한 곳 아래 코드는 실행하지않고 해당 예외랑 맞는 catch문으로 들어가게되어서 catch문을 실행하게된다.
이때 catch는 위에서부터 검사하고, 처음 맞는 하나만 실행하게된다
throw vs throws

둘의 역할은 완전히 다르다
throw 메서드 내에서 예외를 지금 당장 바로 일으키는는 것. 지금 예외를 바생시킨다
throws는 메서드 선언부에서 나오며, 이 예외를 여기서 처리하지않고 호출한쪽에 넘겨준다는 의미. 즉 여기서 처리하지않겠다. 던지겠다.
근데 이때 넘겼으면, 누군가는 잡아야한다.
언체크드(런타임예외)는 throws도 try-catch도 없이 컴파일된다