이상을 꿈꾸는 몽상가.. 프로그래밍을 좋아함..


유용한 표준 Java RuntimeException

https://openjdk.java.net
( 이미지 출처 : https://openjdk.java.net )

Java 프로그래밍을 하면서 예외처리를 발생시켜야하는 경우, 우리는 RuntimeException을 상속하는 예외를 사용하면 됩니다.
그리고 RuntimeException을 상속하는 예외를 새롭게 만드는 것보다는 JDK에서 제공하는 표준 RuntimeExcepton 상속 예외들을 사용하는 것이 바람직합니다.

JDK 12 기준으로 RuntimeException을 직접 상속하는 예외는 총 58개입니다. (참고 - OpenJdk 12 RuntimeException)
그리고 그 58개의 예외들을 다시 상속하는 자식 예외들까지 개수를 세면 엄청나게 많습니다.

그 중 자주 사용하게 되는 유용한 표준 RuntimeException 들을 기록합니다.

참고로 전체 계층 구조를 보고 싶으시다면 Intellij의 Hierarchy 기능을 이용하시면 쉽게 확인 가능합니다.
예를들어 RuntimeException의 전체 계층 구조를 보고 싶다면 아래와 따라하시면 됩니다.

  • shift 연속 두번 누른 후 RuntimeException 입력 후 선택 : RuntimeException class가 열림
  • Ctrl + H

IllegalArgumentException

IllegalArgumentException 은 잘못된 인수를 가진 호출을 받았을 때 사용하면 됩니다.

IllegalArgumentException를 다시 상속하는 예외들도 많이 있습니다. 아래 예시는 그 중 몇가지 자주 사용되는 예외들입니다.
다양한 부적절한 인슈 유형들에 대해서 좀 더 구체적인 예외를 발생시킬 수 있게 해줍니다.

  • IllegalFormatException - available in 1.5 or later
  • InvalidKeyException - 1.5
  • InvalidParameterException - 1.1
  • InvalidPathException - 1.7
  • KeyAlreadyExistsException - 1.5
  • NumberFormatException - 1.0
  • ProviderMismatchException - 1.7

IllegalStateException

IllegalStateException 은 호출받은 객체가 요청을 수행하기에 적합하지 않은 상태일때 사용하면 됩니다.

  • AcceptPendingException - 1.7
  • AlreadyBoundException - 1.7
  • CancellationException - 1.5
  • CancelledKeyException - 1.4
  • ReadPendingException - 1.7
  • WritePendingException - 1.7

NullPointerException

NullPointerException 은 null을 허용하지 않는 메소드에 null이 인자로 넘어왔을 때 사용하면 됩니다.

이 또한 잘못된 인자에 대한 에러이고 IllegalArgumentException을 사용해야하는 것이 아닌가? 라는 의문이 들수 있습니다. 관례적으로, null에 대해서는 IllegalArgumentException이 아니라 NullPointerException을 사용합니다.

IndexOutOfBoundsException

IndexOutOfBoundsException 은 인덱스가 허용범위를 넘어갔을 경우 사용하면 됩니다.

이 또한 잘못된 인자에 대한 에러이고 IllegalArgumentException을 사용해야하는 것이 아닌가? 라는 의문이 들수 있습니다. 관례적으로, 인덱스가 허용범위를 넘어간 경우에 대해서는 IllegalArgumentException이 아니라 IndexOutOfBoundsException를 사용합니다.

ConcurrentModificationException

ConcurrentModificationException 은 허용되지 않는 동시 수정이 발생되었을 때 사용하면 됩니다.

UnsupportedOperationException

UnsupportedOperationException 은 지원되지 않는 메소드가 호출되었을 때 사용하면 됩니다.


Associated Posts

관련된 주제를 살펴볼 수 있도록 동일한 Tag를 가진 글들을 모아뒀습니다. 제목을 눌러주세요.

i