SHUSTORY

14-1 예외 클래스 본문

프로그래밍/JAVA

14-1 예외 클래스

어서오시우 2023. 3. 16. 18:14
728x90

오류란?

프로그램에서 오류가 발생하는 상황은 두 가지가 있다.

프로그램 작성 중 실수로 발생하는 컴파일 오류

실행 중인 프로그램이 의도하지 않은 동작을 하거나 프로그램이 중지되는 실행 오류이다.

실행 오류 중 프로그램을 잘못 구현하여 의도한 바와 다르게 실행되어 생기는 오류를 버그라고 한다.

컴파일 오류는 발생한 컴파일 오류를 모두 수정해야 프로그램이 정상적으로 실행되므로

개발 환경에서 대부분 문법적으로 오류의 원인을 알 수 있다.

하지만 실행 오류의 경우 예측하기 어려운 경우가 많고, 프로그램이 비정상 종류되며 갑자기 멈춰 버린다.

 

실제 서비스를 제공하고 있는 프로그램의 경우 실행 중 오류가 발생하면 그 상황을 재현하여 테스트해야 하는데,

실제 시스템이나 서비스가 운영 중인 경우 쉽지 않기 때문에 로그 분석을 통해 원인을 찾을 수 있도록 프로그램 개발 시 

로그를 정확하게 남기는 것이 중요하다.

* 로그란 소프트웨어 실행 중 발생하는 여러 상황을 기록한 내용으로서 주로 파일에 기록하며, 이를 로그 파일이라고 한다.

 

자바에서는 비정상 종료를 최소화하기 위해 다양한 예외 처리 방법을 가지고 있다.

 

 

오류와 예외

실행 오류에는 크게 두 가지가 있다.

  • 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