[Java] Exception

2024. 10. 4. 19:33·Language/Java
반응형

예외란?

  • 프로그램 실행 중 발생할 수 있는 비정상적인 상황을 나타내며, 이를 처리하기 위한 메커니즘
  • 자바에서는 예외를 Throwable 클래스와 그 하위 클래스(Exception, Error)로 표현
  • Error: 시스템 수준에서 복구할 수 없는 문제(JVM 내부 오류 등)
  • Exception: 애플리케이션 수준에서 복구 가능한 문제
    • Unchecked Exception : RuntimeException과 그 하위 클래스
    • Checked Exception :Exception 을 상속하지만 RuntimeException의 하위 클래스가 아닌 예외들

예외 처리의 개념은 자바 이전에도 존재했지만, 자바는 이를 더 정형화하고 언어 차원에서 강력하게 지원한다. 자바의 Checked Exception은 개발자가 예외 처리를 강제함으로써 소프트웨어의 안정성을 높이는 것을 목표로 도입되었다.

  • 네트워크 장애, 파일 접근 오류 등 실행 시 발생할 수 있는 예외 상황을 처리한다.
  • 예외 발생 시 적절한 처리를 통해 시스템이 비정상 종료되는 것을 방지한다.
  • 예외 처리를 명시적으로 작성함으로써 코드의 의도를 명확히 하고, 오류 디버깅을 용이하게 한다.

Error

  • JVM이 실행 중에 발생하는 치명적인 오류로 인해 애플리케이션이 복구할 수 없는 상황
  • 복구할 수 없는 문제 상황이기 때문에 애플리케이션에서는 Error를 직접 처리하기보다 로그를 남기거나 시스템을 안정적으로 종료시키는 방법을 고려
  • ex : OutOfMemoryError, StackOverflowError, NoClassDefFoundError 등

Checked Exception

  • RuntimeException을 상속하지 않는 예외 클래스들을 지칭한다. 컴파일 시점에 확인되며 반드시 예외 처리를 해야 한다(try-catch 또는 throws를 사용). 주로 외부 요인으로 인한 예외 상황에 사용한다.
  • ex : IOException, SQLException, ClassNotFoundException 등

Unchecked Exception

  • RuntimeException을 상속하는 클래스들로 런타임에 확인되는 예외들이다. Checked Exception과 달리 명시적인 예외 처리를 강제하지 않는다. 주로 프로그래밍 오류로 인한 예외에 사용된다.
  • ex : NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException 등

왜 다른 프로그래밍 언어는 CHecked Exception을 포함하지 않을까?

  • Checked Exception을 사용하면 반드시 예외 처리를 강제하기 때문에 코드의 복잡성이 높아지고 가독성이 떨어진다.
  • Checked Exception은 복구 가능한 예외를 처리하기 위한 목적으로 설계되었지만, 실제로는 많은 경우 복구가 불가능한 경우가 많다. 네트워크 장애나 파일 시스템 오류 처럼 개발자가 복구하기 어려운 경우가 많다.
반응형
저작자표시 비영리 변경금지 (새창열림)
'Language/Java' 카테고리의 다른 글
  • [Java] 동등성, 동일성
  • [Java] Enum 비교를 equals() 로 하지않고 == 로 해야 하는 이유
  • [Java] call by value, call by reference
  • [Java] sealed
덴마크초코우유
덴마크초코우유
IT, 알고리즘, 프로그래밍 언어, 자료구조 등 정리
    반응형
  • 덴마크초코우유
    이것저것끄적
    덴마크초코우유
  • 전체
    오늘
    어제
    • 분류 전체보기 (123)
      • Spring Framework (10)
        • Spring (5)
        • JPA (3)
        • Spring Security (0)
      • Language (51)
        • Java (11)
        • Python (10)
        • JavaScript (5)
        • NUXT (2)
        • C C++ (15)
        • PHP (8)
      • DB (16)
        • MySQL (10)
        • Reids (3)
        • Memcached (2)
      • 개발 (3)
      • 프로젝트 (2)
      • Book (2)
      • PS (15)
        • 기타 (2)
        • 백준 (2)
        • 프로그래머스 (10)
      • 딥러닝 (8)
        • CUDA (0)
        • Pytorch (0)
        • 모델 (0)
        • 컴퓨터 비전 (4)
        • OpenCV (1)
      • 기타 (16)
        • 디자인패턴 (2)
        • UnrealEngine (8)
        • ubuntu (1)
        • node.js (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CPP
    딥러닝
    Unreal Engine
    파이썬
    pytorch
    redis
    Unreal
    게임
    NUXT
    JS
    Python
    웹
    알고리즘
    프로그래머스
    C
    memcached
    자바
    select
    게임 개발
    MySQL
    C++
    JavaScript
    블루프린트
    언리얼엔진4
    map
    클래스
    FPS
    mscoco
    PS
    php
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
덴마크초코우유
[Java] Exception
상단으로

티스토리툴바