티스토리 뷰
에러와 예외
자바에서는 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 에러(Error)라고 한다.
에러는 다시 컴파일 에러와 런타임 에러로 나뉜다.
컴파일 에러는 말 그대로 컴파일 과정에서 나오는 에러 (코드짜다가 마주치는 빨간 밑줄)
런타임 에러는 실행 과정에서 일어나는 에러이다.
컴파일 에러는 자바 컴파일러가 문법 검사를 통해 오류를 잡아내 준다. 우리는 컴파일러가 알려주는 오류를 수정하기만 하면 된다.
(김영한님도 가장 좋은 에러가 컴파일 에러라고 하셨다!)
컴파일이 잘 되더라도 실행하는 도중 (Runtime)에 에러가 발생할 수 있는데, 이를 런타임 에러라고 한다.
자바에서는 이 런타임 에러를 예외와 에러로 나누어 대응한다.
예외(Exception)란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다.
예외가 발생되면 프로그램은 곧바로 종료된다는 점에서 에러와 비슷하다. 그러나 예외는 예외 처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다.
에러는 메모리 부족(OutOfMemoryError), 스택오버플로우(StackOverFlowError)처럼 JVM이나 하드웨어 등의 기반 시스템의 문제로 발생하는 것으로, 발생했을 때를 대비해서 프로그래머가 뭔가 할 수 있는게 없다.
발생하면 프로그램이 무조건 종료되기 때문에 애초에 잘 막아야 한다.
예외와 예외 클래스
예외는 두 가지 종류가 있다. 일반 예외, 실행 예외(runtime exception)!
일반 예외는 컴파일러 체크 예외 (checked Exception) 라고도 하는데, 자바 소스를 컴파일하는 과정에서 해당 예외 처리 코드가 있는지 검사한다. 만약 예외 처리 코드가 없다면 컴파일 오류를 발생시킨다.
실행 예외는 컴파일러 넌 체크 예외 (unchecked Exception)라고도 한다. 말그대로 컴파일러가 체크하지 않는다. 실행 시 예측할 수 없이 갑자기 발생하기 때문에 컴파일하는 과정에서 예외 처리 코드가 있는지 검사하지 않는다.
자바에서는 예외를 클래스로 관리한다.
모든 예외 클래스는 java.lang.Exception 클래스를 상속받는다.
일반 예외와 실행 예외 클래스는 RuntimeException 클래스를 기준으로 구분한다.
java.lang.RuntimeException의 하위 클래스이면 실행 예외 클래스! 아니면 일반 예외 클래스이다.
참고자료
혼자 공부하는 자바 (신용권 저)
'language > java' 카테고리의 다른 글
예외 처리 - throw / throws (0) | 2023.02.03 |
---|---|
예외 처리 - Try-Catch문의 흐름 / Finally (0) | 2023.02.01 |
java.lang.IllegalStateException: getWriter() has already been called for this response (0) | 2023.01.31 |
Error: Gradle script '~~~' is not executable (0) | 2023.01.31 |
자바 chars()이용해서 문자열의 특정 값 개수 가져오기 (0) | 2023.01.17 |
- Total
- Today
- Yesterday
- 자바
- 대규모더미데이터
- 항해
- Redis
- bankersRounding
- hackerrank
- Spring
- 부하테스트시나리오
- pessimisticlock
- 프로그래머스
- jwt
- Lock
- CorrectnessAndTheLoopInvariant
- 동적크롤링
- jmeter토큰
- jmeter시나리오
- jmeter쿠키
- EC2
- Redisson
- 스프링faker
- jmeter테스트
- 인덱스
- Python
- jmeter세션
- CheckedException
- Java
- jmeter로그인
- jmeter부하테스트
- index
- 토큰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |