try/catch/finally
예외는 개체지향과 비슷한 시점에 나왔을 뿐 독립적임

try 블록 위에서부터 순서대로 실행
- 예외 발생하면 예외 종류에 따라 분기해서
catch- 언어 자체에서 제공하는 예외
- 사용하는 함수에서 자체적으로 제공하는 예외
- 예외 발생 여부와 관계없이 항상
finally블록 실행catch블록에서return문이 있더라도finally블록은 항상 실행

Exception 클래스는 최상위 예외 부모
catch문에 부모 클래스 예외를 넣으면 이 예외의 자식 클래스 예외가 발생하면 캐치함

부모 예외 클래스 catch 블록이 자식 예외 클래스 catch 블록보다 위에 나오면 안 됨
catch문에 부모 클래스 넣으면 자식 클래스 예외가 발생하면 캐치하기 때문- 왼쪽의 예에서는
FileNotFoundException예외가 발생할 수 없음 - 슬라이드는 “첫 번째
catch블록이 실행됨”이라는 개념으로 설명하지만, Java에서는 이 경우 아예 컴파일 오류 — 자식catch블록이 도달 불가능하기 때문- 오류 메시지: “exception FileNotFoundException has already been caught” (Java 11 javac 검증)
- 이 규칙은 checked/unchecked와 무관 —
catch절 사이의 상속 관계(도달 가능성)만 봄.catch (RuntimeException e)뒤에catch (IllegalArgumentException e)를 둬도 동일한 오류
specific to general 로 작성하자!