기록이 힘이다.

Unchecked Exceptions RuntimeException 본문

JAVA

Unchecked Exceptions RuntimeException

dev22 2023. 1. 19. 08:51
728x90

Java 프로그래밍 언어에는 확인되지 않은 예외( , 및 해당 하위 클래스)를 포착하거나 지정하는 메서드가 필요하지 않기 때문에 프로그래머 RuntimeException는 Error확인되지 않은 예외만 발생시키는 코드를 작성하거나 모든 예외 하위 클래스가 에서 상속되도록 만드는 유혹을 받을 수 있습니다 

RuntimeException. 이 두 가지 바로 가기를 사용하면 프로그래머는 컴파일러 오류에 신경 쓰지 않고 예외를 지정하거나 포착하지 않고도 코드를 작성할 수 있습니다. 이것은 프로그래머에게 편리해 보일 수 있지만 catch또는 specify요구 사항의 의도를 벗어나 클래스를 사용하는 다른 사람에게 문제를 일으킬 수 있습니다.

디자이너가 해당 범위 내에서 발생할 수 있는 모든 확인되지 않은 확인된 예외를 지정하는 메서드를 강제로 결정한 이유는 무엇입니까? 메소드에 의해 발생할 수 있는 모든 Exception것은 메소드의 공용 프로그래밍 인터페이스의 일부입니다. 메서드를 호출하는 사람은 메서드가 throw할 수 있는 예외에 대해 알고 있어야 그에 대해 수행할 작업을 결정할 수 있습니다. return이러한 예외는 매개 변수 및 값 만큼 해당 메서드의 프로그래밍 인터페이스의 일부입니다 .

다음 질문은 "메서드가 발생시킬 수 있는 예외를 포함하여 메서드의 API를 문서화하는 것이 좋다면 런타임 예외도 지정하지 않는 이유는 무엇입니까?"일 수 있습니다. 런타임 예외는 프로그래밍 문제의 결과인 문제를 나타내므로 API 클라이언트 코드가 어떤 방식으로든 이를 복구하거나 처리할 것으로 합리적으로 기대할 수 없습니다. 이러한 문제에는 0으로 나누는 것과 같은 산술 예외가 포함됩니다. null 참조를 통해 개체에 액세스하려는 것과 같은 포인터 예외; 너무 크거나 너무 작은 인덱스를 통해 배열 요소에 액세스하려는 시도와 같은 인덱싱 예외.

런타임 예외는 프로그램의 어느 곳에서나 발생할 수 있으며 일반적인 경우에는 매우 많을 수 있습니다. 모든 메서드 선언에 런타임 예외를 추가해야 하는 것은 프로그램의 명료성을 떨어뜨릴 것입니다. 따라서 컴파일러는 런타임 예외를 포착하거나 지정할 것을 요구하지 않습니다(가능하더라도).

a를 던지는 것이 일반적인 사례 중 하나 RuntimeException는 사용자가 메서드를 잘못 호출하는 경우입니다. 예를 들어 메소드는 인수 중 하나가 잘못된 것인지 확인할 수 있습니다 null. 인수가 null인 경우 메서드 는 확인되지 않은 예외 NullPointerException인 를 throw할 수 있습니다.

일반적으로 메서드가 throw할 수 있는 예외를 지정하는 데 방해가 되지 않기 때문에 단순히 RuntimeException하위 클래스를 생성하거나 생성 하지 마십시오.RuntimeException

최종 지침은 다음과 같습니다. 클라이언트가 예외에서 복구할 것으로 합리적으로 예상할 수 있는 경우 확인된 예외로 만드십시오. 클라이언트가 예외에서 복구하기 위해 아무 것도 할 수 없는 경우 확인되지 않은 예외로 만드십시오.

 

https://steady-hello.tistory.com/55

 

[Java] 자바의 예외 - Exception, RuntimeException 그리고 Error

자바의 Error, Exception에 대해 알아보려 한다. 지금부터 볼 내용은 포스팅 가장 아래의 레퍼런스 링크를 참조해서 읽어보면 좋겠다. 일단 Error와 Exception의 차이에 대해 알아보자. Throwable class Throwabl

steady-hello.tistory.com

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/RuntimeException.html

 

RuntimeException (Java SE 11 & JDK 11 )

 

docs.oracle.com

Direct Known Subclasses:AnnotationTypeMismatchException, ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, CatalogException, ClassCastException, ClassNotPreparedException, CMMException, CompletionException, ConcurrentModificationException, DateTimeException, DOMException, DuplicateRequestException, EmptyStackException, EnumConstantNotPresentException, EventException, FileSystemAlreadyExistsException, FileSystemNotFoundException, FindException, IllegalArgumentException, IllegalCallerException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, IllformedLocaleException, ImagingOpException, InaccessibleObjectException, IncompleteAnnotationException, InconsistentDebugInfoException, IndexOutOfBoundsException, InternalException, InvalidCodeIndexException, InvalidLineNumberException, InvalidModuleDescriptorException, InvalidModuleException, InvalidRequestStateException, InvalidStackFrameException, JarSignerException, JMRuntimeException, JSException, LayerInstantiationException, LSException, MalformedParameterizedTypeException, MalformedParametersException, MirroredTypesException, MissingResourceException, NashornException, NativeMethodException, NegativeArraySizeException, NoSuchDynamicMethodException, NoSuchElementException, NoSuchMechanismException, NullPointerException, ObjectCollectedException, ProfileDataException, ProviderException, ProviderNotFoundException, RangeException, RasterFormatException, RejectedExecutionException, ResolutionException, SecurityException, SPIResolutionException, TypeNotPresentException, UncheckedIOException, UndeclaredThrowableException, UnknownEntityException, UnknownTreeException, UnmodifiableModuleException, UnmodifiableSetException, UnsupportedOperationException, VMDisconnectedException, VMMismatchException, VMOutOfMemoryException, WrongMethodTypeException, XPathException