JAVA

10. Error & Exception 1

ggomjiu 2025. 4. 16. 01:59

Throwable 클래스

: 예외 처리를 할 수 있는 최상위 클래스

- Exception과 Error는 Throwable의 상속을 받음

 

Error

: 컴퓨터 시스템의 동작 도중 예기치 않았던 이상 상태가 발생하여 수행 중인 프로그램이 영향을 받을 경우

- 시스템 레벨에서 발생하여, 개발자가 조치할 수 없는 수준을 의미

- EX) Out OfMemory, StackOverFlow

  • StackOverFlowError : 호출의 깊이가 깊어지거나 재귀가 지속되어 Stack OverFlow 발생 시 던져지는 오류
  • OutOfMemoryError : JVM이 할당된 메모리의 부족으로 더이상 객체를 할당할 수 없을 때 던져지는 오류

Exception

: 컴퓨터 시스템의 동작 도중 예기치 않았던 이상 상태가 발생하여 수행 중인 프로그램이 영향을 받는 경우

- 개발자가 구현한 로직에서 발생하며, 개발자가 예측하여 방지할 수 있기에 상황에 맞게 예외처리(Exception Handle)를 해야 함

Exception 종류

  • Checked Exception : 예외처리가 필수이며, 처리하지 않으면 컴파일이 되지 않음, JVM 외부와의 통신할 때 주로 쓰임
    • RuntimeException 이외의 모든 예외
    • IOException, SQLException 등
  • UncheckedException : 컴파일 때 체크되지 않고, Runtime에 발생하는 Exception
    • RuntimeException 하위의 모든 예외
    • NullPointerException, IndexOutBoundException 등

대표적인 Exception Class

  • NullPointerException : Null 레퍼런스를 참조할 때 발생, 동작시킬 때 발생
  • IndexOutOfBoundsException : 배열과 유사한 자료구조(문자열, 배열)에서 범위를 벗어난 인덱스 번호 사용으로 발생
  • FormatException : 문자열, 숫자, 날짜 반환 시 잘못된 데이터로 발생하며, 보통 사용자의 입력, 외부 데이터 로딩, 결과 데이터의 변환 처리에서 자주 발생
  • ArthmeticException : 정수를 0으로 나눌 때 발생
  • ClassCastException : 변환할 수 없는 타입으로 객체를 변환할 때 발생
  • IllefalArgumentException : 잘못된 인자 전달 시 발생
  • IOException : 입출력 동작 실패 또는 인터럽트 시 발생
  • IllegalStateException : 객체의 상태가 메소드 호출에는 부적절한 경우에 발생
  • ConcurrentModificationException : 금지된 곳에서 객체를 동시에 수정하는 것이 감지될 경우 발생
  • UnsupportedOperationException : 객체가 메소드를 지원하니 않는 경우 발생

Exception Handler

  • 직접 try ~ catch를 이용해서 예외를 처리하는 방식 -> 예외 복구
  • throws Exception을 이용해서 발생한 예외의 책임을 호출하는 쪽이 책임지도록 하는 방식 -> 예외 회피
  • Exception 전환으로 throws Exception과 try ~ catch문을 활용하여 적절한 Exception으로 전환해서 넘기는 방법 -> 예외 전환