ysk(0soo)
Lifealong
ysk(0soo)
전체 방문자
오늘
어제
  • 분류 전체보기 (238)
    • Java (50)
      • whiteship-java-study (11)
      • Java (28)
      • time (6)
    • Spring (68)
      • JPA (15)
      • Spring (1)
      • SpringBoot (1)
      • SpringMVC (6)
      • Spring Security (22)
      • Jdbc (1)
      • RestDocs (14)
      • log (6)
    • Kotlin (3)
    • Web (2)
      • nginx (1)
    • Database (14)
      • MySQL (5)
      • PostgreSQL (1)
      • SQL (1)
      • Redis (4)
    • C, C++ (0)
    • Git (1)
    • Docker (2)
    • Cloud (3)
      • AWS (3)
    • 도서, 강의 (0)
      • t5 (0)
    • 기타 (7)
      • 프로그래밍 (1)
    • 끄적끄적 (0)
    • CS (14)
      • 운영체제(OS) (2)
      • 자료구조(Data Structure) (9)
    • 하루한개 (12)
      • 우아한 테크코스-10분테코톡 (12)
    • 스터디 (12)
      • 클린 아키텍처- 로버트마틴 (2)
      • JPA 프로그래밍 스터디 (10)
    • 테스트 (34)
      • JUnit (19)
      • nGrinder (2)
      • JMeter (0)
    • Infra (3)
    • 프로그래머스 백엔드 데브코스 3기 (0)
    • 디자인 패턴 (3)
    • Issue (4)
    • system (1)
      • grafana (0)
      • Prometheus (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

공지사항

인기 글

태그

  • 가상 스레드 예외 핸들링
  • FilterSecurityInterceptor
  • restdocs enum
  • AccessDecisionManager
  • AuthenticationException
  • 트랜잭션
  • 동일성
  • StructuredConcorrency
  • nGrinder
  • junit5
  • 동등성
  • jpa
  • restdocs custom
  • 구조화된 동시성
  • node exporter basic auth
  • java
  • LocalDateTime
  • scope value
  • AccessDecisionVoter 커스텀
  • UserDetailsService
  • tree
  • nginx basic auth
  • DataJpaTest
  • 가상 스레드
  • 인가(Authorization) 처리
  • mysql
  • VirtualThread Springboot
  • 정규표현식
  • 동시성 제어
  • querydsl

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ysk(0soo)

Lifealong

Java/Java

자바가 제공하는 기본 예외들과 자주 사용하는 예외들

2022. 11. 27. 02:38

자바가 제공하는 기본예외들

Arithmetic Exception

산술연산에서 예외 조건이 발생했을 때 발생

  • 대표적인 / by zero

ArrayIndexOutOfBounds Exception

  • 잘못된 인덱스로 Array에 엑세스 했을 경우 발생.
  • 인덱스가 음수이거나 배열 크기보다 크거나 같을 때 발생

ClassNotFoundException

  • 정의한 클래스를 찾을 수 없을 때 발생하는 예외

FileNotFoundException

  • 파일에 엑세수 할 수 없거나 열리지 않을 경우 발생

IOException

  • 입출력 작업이 실패하거나 중단될 때 발생

InterruptedException

  • Thread가 waiting, sleeping 또는 어던 처리를 하고 있을 떄 interrupt가 되면 발생하는 예외

NoSuchMethodException

  • 찾을 수 없는 메서드에 엑세스 할 때 이 예외가 발생

NullPointerException

  • null 객체의 멤버를 참조할 때 발생

NumberFormatException

  • 메서드가 문자열을 숫자 형식으로 변환할 수 없는 경우 발생

StringIndexOutOfBoundsException

  • 문자열에 엑세스 하는 인덱스가 문자열보다 큰 경우거나 음수일 때 발생

 

 

재사용하기 좋은 표준 예외

  • JDK가 제공하는 표준 예외에 속하는데도 직접 예외 클래스를 만들어 사용하면 다른 사람의 입장에서 혼란스러울 수도 있다.

IllegalArgumentException

  • 가장 많이 재사용되는 예외로(아이템 49), 호출자가 인수로 부적절한 값을 넘길 때 던지는 예외다. (ex. 반복 횟수를 지정하는 매개변수에 음수가 할당될 때)

IllegalStateException

  • 자주 재사용된다. 이 예외는 대상 객체의 상태가 호출된 메서드를 수행하기에 적합하지 않을 때 주로 던진다. 제대로 초기화되지 않은 객체를 사용하려 할 때 던질 수 있다.

NullPointerException

  • 메서드가 던지는 모든 예외를 잘못된 인수나 상태라고 포괄적으로 생각할 수도 있어, IllegalArgument라고 볼 수도 있겠으나, 그 중 특수한 일부는 따로 구분해서 써야한다. null 값을 허용하지 않는 메서드에 null을 건네면 관례상 NullPointerException을 던진다.

IndexOutOfBoundsException

  • NullPointerException과 유사하게 특수한 예로, 어떤 시퀀스의 허용 범위를 넘는 값을 건넬 때, IndexOutOfBoundsException을 던진다.

ConcurrentModificationException

  • 단일 스레드에서 사용하려고 설계한 객체를 여러 스레드가 동시에 수정하려 할 때 던진다. (사실 동시 수정을 확실히 검출할 수 있는 안정된 방법은 없어, 이 예외는 문제가 생길 가능성을 알려주는 정도의 역할로 쓰인다)

UnsupportedOperationException

  • 이 예외는 클라이언트가 요청한 동작을 대상 객체가 지원하지 않을 때 던진다. 대부분 객체는 자신이 정의한 메서드를 모두 지원하니 흔히 쓰이는 예외는 아니다. 보통은 구현하려는 인터페이스의 메서드 일부를 구현할 수 없을 때 쓰는데, 예를 들어 원소를 넣을 수만 있는 List 구현체에 대고 누군가 remove 메서드를 호출하면 이 예외를 던질 것이다.

Exception, RuntimeException, Throwable, Error는 직접 재사용하지 말자.

이 클래스들은 추상 클래스라고 생각하길 바란다. 이 예외들은 다른 예외들의 상위 클래스이므로, 즉 여러 성격의 예외들을 포괄하는 클래스이므로 안정적인 테스트가 불가능하다.

 

  • 이펙티브 자바 3/E: 아이템72 표준 예외를 사용하라
  • 자바독에 표준 예외와 사용 상황이 잘 정리어되있다
저작자표시 비영리 (새창열림)

'Java > Java' 카테고리의 다른 글

예외 처리 방법(Exception Handling) - 복구, 회피, 전환  (0) 2022.12.07
예외 처리란  (0) 2022.11.27
객체지향 관점에서의 is-a, has-a  (0) 2022.11.25
Java - 객체 비교에는 Objects.equals()를 사용하자.  (0) 2022.11.19
Java - 동일성과 동등성 ( ==, equals() )  (0) 2022.11.19
    'Java/Java' 카테고리의 다른 글
    • 예외 처리 방법(Exception Handling) - 복구, 회피, 전환
    • 예외 처리란
    • 객체지향 관점에서의 is-a, has-a
    • Java - 객체 비교에는 Objects.equals()를 사용하자.
    ysk(0soo)
    ysk(0soo)
    백엔드 개발을 좋아합니다. java kotlin spring, infra 에 관심이 많습니다. email : kim206gh@naver.com github : https://github.com/devysk

    티스토리툴바