티스토리 뷰
자바의 에러와 예외의 상속 계층도는 아래와 같다.
위에서 보면 알 수 있듯, 실행 예외 (RuntimeException)을 제외하고는 전부 Checked Exception이라고 되어있다.
앞서 설명한 적이 있는데, 이는 컴파일 시점에서 확인될 수 있는 예외라는 것이다. 만약 코드를 작성하다가 Checked Exception을 발생시키면 예외를 반드시 처리해야 한다.
위 코드에서 IOException은 Checked Execption이기 때문에 컴파일 단계에서 예외 확인이 된다.
위 코드를 컴파일 하려면 try-catch로 예외처리를 하거나 throws로 예외를 던져줘야 한다.
반면에 Runtime Exception은 unchecked Exception인 이유는 개발자가 작성한 코드가 실행될 때 발견되는 예외이기 때문이다.
(NullPointException이나 ArrayIndexOutOfBoundsException을 생각하자!)
예측할 수 없이 강제로 발생하기 때문에 컴파일하는 과정에서 예외 처리 코드가 있는지 검사하지 않고, 그렇다고 해서 메서드에 모든 runtime exception을 항상 쓰도록 강제하는 것도 말이 안되기 때문이다.
(이 문장은 제가 쓴 말이니 흘려 들으시고 밑의 oracle의 말을 봐 주세요)
...Runtime exceptions can occur anywhere in a program, and in a typical one they can be very numerous. Having to add runtime exceptions in every method declaration would reduce a program’s clarity. Thus, the compiler does not require that you catch or specify runtime exceptions (although you can).
출처 https://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html
'language > java' 카테고리의 다른 글
Junit으로 테스트코드를 작성한 과정 (0) | 2023.02.28 |
---|---|
스프링부트에서 Faker를 활용해 csv파일으로 대규모 더미데이터 만들기 (0) | 2023.02.14 |
예외 처리 - throw / throws (0) | 2023.02.03 |
예외 처리 - Try-Catch문의 흐름 / Finally (0) | 2023.02.01 |
예외 처리 - 에러와 예외 / 예외와 예외 클래스 (0) | 2023.02.01 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링faker
- CorrectnessAndTheLoopInvariant
- 대규모더미데이터
- jmeter쿠키
- 자바
- jmeter부하테스트
- 토큰
- bankersRounding
- jmeter토큰
- CheckedException
- jmeter세션
- Java
- 부하테스트시나리오
- 프로그래머스
- jmeter시나리오
- Spring
- Lock
- jmeter테스트
- jwt
- index
- 항해
- Redisson
- Python
- hackerrank
- 동적크롤링
- pessimisticlock
- jmeter로그인
- 인덱스
- Redis
- EC2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함