일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 코딩
- 문자 단위 스트림
- 졸리다
- 자료형
- 메서드
- 백엔드
- 개발자
- 변수
- 보조 스트림
- try-catch
- 파이팅
- 인터페이스
- 상속
- Java
- 코린이
- FileInputStream
- 예외 처리
- node.js
- 배열
- MPA
- 바이트 단위 스트림
- exception
- 새벽공부
- ArrayList
- 초보개발자
- 다형성
- 자바
- SSR
- throws
- 인스턴스
- Today
- Total
SHUSTORY
14-1 예외 클래스 본문
오류란?
프로그램에서 오류가 발생하는 상황은 두 가지가 있다.
프로그램 작성 중 실수로 발생하는 컴파일 오류와
실행 중인 프로그램이 의도하지 않은 동작을 하거나 프로그램이 중지되는 실행 오류이다.
실행 오류 중 프로그램을 잘못 구현하여 의도한 바와 다르게 실행되어 생기는 오류를 버그라고 한다.
컴파일 오류는 발생한 컴파일 오류를 모두 수정해야 프로그램이 정상적으로 실행되므로
개발 환경에서 대부분 문법적으로 오류의 원인을 알 수 있다.
하지만 실행 오류의 경우 예측하기 어려운 경우가 많고, 프로그램이 비정상 종류되며 갑자기 멈춰 버린다.
실제 서비스를 제공하고 있는 프로그램의 경우 실행 중 오류가 발생하면 그 상황을 재현하여 테스트해야 하는데,
실제 시스템이나 서비스가 운영 중인 경우 쉽지 않기 때문에 로그 분석을 통해 원인을 찾을 수 있도록 프로그램 개발 시
로그를 정확하게 남기는 것이 중요하다.
* 로그란 소프트웨어 실행 중 발생하는 여러 상황을 기록한 내용으로서 주로 파일에 기록하며, 이를 로그 파일이라고 한다.
자바에서는 비정상 종료를 최소화하기 위해 다양한 예외 처리 방법을 가지고 있다.
오류와 예외
실행 오류에는 크게 두 가지가 있다.
- JVM에서 발생하는 시스템 오류
- 사용 가능한 동적 메모리가 없는 경우
- 스택 메모리의 오버플로가 발생한 경우 등
- 시스템 오류는 프로그램에서 제어할 수 없다.
- 예외
- 프로그램에서 제어 가능하다.
예외 클래스의 종류
오류 클래스는 모두 Throwable 클래스에서 상속받는다.
Error 클래스의 하위 클래스는 시스템에서 발생하는 오류를 다루며 프로그램에서 제어하지 않는다.
프로그램에서 제어하는 부분은 Exception 클래스와 그 하위에 있는 예외 클래스이다.
프로그램에서 처리하는 예외 클래스의 최상위 클래스는 Exception 클래스이다.
다음은 Exception 하위 클래스 중 사용 빈도가 높은 클래스 위주로 계층도를 표현한 것이다.
Exception 클래스 하위에는 이 외에도 많은 클래스가 있다.
계층도에서 IOException 클래스는 입출력에 대한 예외 처리를,
RuntimeException는 프로그램 실행 중 발생할 수 있는 오류에 대한 예외를 처리한다.
그런데 RuntimeException은 다른 예외 처리와 달리 try-catch 문을 사용하여 예외 처리를 하지 않아도 오류가 나지 않는다.
예를 들어 산술 연산 중 발생할 수 있는 ArithmeticException에서 0으로 숫자 나누기를 할 경우 발생하는 예외에서와 같이 컴파일러에 의해 체크되지 않는 예외는 프로그래머가 알아서 처리해야 하므로 주의해야 한다.
'프로그래밍 > JAVA' 카테고리의 다른 글
14-3 예외 처리 미루기 (0) | 2023.03.17 |
---|---|
14-2 예외 처리하기 (0) | 2023.03.16 |
13-2 람다식 (0) | 2023.03.14 |
13-1 내부 클래스 (0) | 2023.03.13 |
12-5 Map 인터페이스 (0) | 2023.03.08 |