programing

java.lang의 차이.RuntimeException 및 java.lang.예외.

goodcopy 2022. 8. 12. 00:02
반응형

java.lang의 차이.RuntimeException 및 java.lang.예외.

누가 좀 설명해 주세요java.lang.RuntimeException그리고.java.lang.Exception자체 예외를 만들 경우 어떤 예외를 연장할 것인지 결정하려면 어떻게 해야 합니까?

일반 런타임예외는 프로그래밍 방식으로 방지할 수 있는 예외입니다.NullPointerException,ArrayIndexOutOfBoundException을 체크하면null메서드를 호출하기 전에NullPointerException절대 일어나지 않을 거야유사하게ArrayIndexOutOfBoundException인덱스를 먼저 체크하면 절대 발생하지 않습니다. RuntimeException컴파일러에 의해 체크되지 않기 때문에 깨끗한 코드입니다.

편집 : 요즘 사람들은RuntimeException왜냐하면 그게 만들어내는 깨끗한 코드이기 때문이죠.그것은 전적으로 개인적인 선택이다.

Java에서는 두 가지 유형의 예외가 있습니다. 선택되지 않은 예외와 선택되지 않은 예외입니다.선택된 예외는 코드로 명시적으로 처리되어야 하지만 선택되지 않은 예외는 명시적으로 처리될 필요가 없습니다.

체크된 예외의 경우 예외가 발생할 수 있는 코드 주위에 try/catch 블록을 배치하거나 메서드에 throws 구를 추가하여 메서드가 이러한 유형의 예외를 슬로우할 수 있음을 나타내야 합니다(콜링 클래스 이상에서 처리되어야 함).

예외에서 파생된 모든 예외는 선택된 예외이며, 런타임에서 파생된 클래스는 선택된 예외입니다.예외는 체크되지 않습니다.런타임예외는, 발신자 코드로 명시적으로 처리할 필요는 없습니다.

다른 점을 살펴보기 전에java.lang.RuntimeException그리고.java.lang.Exceptionclasses, 알아두셔야 합니다.Exception계층.둘다요.Exception그리고.Error클래스는 클래스에서 파생됩니다.Throwable(클래스에서 유래한다.)Object). 그리고 클래스RuntimeException클래스에서 파생되다Exception.

모든 예외는 다음 중 하나에서 파생됩니다.Exception또는RuntimeException.

에서 파생된 모든 예외는RuntimeException체크되지 않은 예외라고 불립니다.그리고 다른 모든 예외는 체크된 예외입니다.선택된 예외는 코드 내 어딘가에 있어야 합니다.그렇지 않으면 컴파일되지 않습니다.그렇기 때문에 체크 예외라고 불립니다.한편, 체크 마크가 없는 예외를 제외하고, 발신 방식은 처리 또는 선언할 의무가 없습니다.

따라서 컴파일러가 강제로 처리하도록 하는 모든 예외는 직접 에서 파생됩니다.java.lang.Exception컴파일러가 강제로 처리하지 않는 다른 모든 것은java.lang.RuntimeException.

다음은 런타임의 직접 알려진 하위 클래스입니다.예외입니다.

AnnotationTypeMismatchException,
ArithmeticException,
ArrayStoreException,
BufferOverflowException,
BufferUnderflowException,
CannotRedoException,
CannotUndoException,
ClassCastException,
CMMException,
ConcurrentModificationException,
DataBindingException,
DOMException,
EmptyStackException,
EnumConstantNotPresentException,
EventException,
IllegalArgumentException,
IllegalMonitorStateException,
IllegalPathStateException,
IllegalStateException,
ImagingOpException,
IncompleteAnnotationException,
IndexOutOfBoundsException,
JMRuntimeException,
LSException,
MalformedParameterizedTypeException,
MirroredTypeException,
MirroredTypesException,
MissingResourceException,
NegativeArraySizeException,
NoSuchElementException,
NoSuchMechanismException,
NullPointerException,
ProfileDataException,
ProviderException,
RasterFormatException,
RejectedExecutionException,
SecurityException,
SystemException,
TypeConstraintException,
TypeNotPresentException,
UndeclaredThrowableException,
UnknownAnnotationValueException,
UnknownElementException,
UnknownTypeException,
UnmodifiableSetException,
UnsupportedOperationException,
WebServiceException 

Exception체크되어 있다.RuntimeException체크되어 있지 않습니다.

체크박스는 사용자가 예외를 캐치 내에서 처리하도록 요구하거나 메서드(또는 슈퍼클래스 중 하나)를 슬로우라고 선언하는 것을 의미합니다.

일반적으로 API의 발신자가 예외를 처리할 것으로 예상되는 경우 체크된 예외를, 발신자가 정상적으로 처리할 수 없는 경우(예를 들어 파라미터 중 하나에서의 오류 등)에는 체크되지 않은 예외를 슬로우합니다.

런타임 예외 클래스(실행 시간)예외 및 그 서브클래스)는 컴파일러가 런타임 예외가 발생할 수 없음을 설정할 수 없기 때문에 컴파일 시간 체크에서 제외됩니다.

설계하는 클래스에서 예외의 서브클래스를 설정하고 예외 시나리오를 표시하기 위해 예외 인스턴스를 던져야 합니다.이렇게 하면 클래스의 클라이언트에 대해 클래스 사용 시 예외가 발생할 수 있으며 이러한 예외적인 시나리오를 처리하기 위한 절차를 수행해야 함을 명시적으로 알릴 수 있습니다.

다음 코드 스니펫에서는 이 점에 대해 설명합니다.

//Create your own exception class subclassing from Exception
class MyException extends Exception {
    public MyException(final String message) {
        super(message);
    }
}

public class Process {
    public void execute() {
        throw new RuntimeException("Runtime");
    }  
    public void process() throws MyException {
        throw new MyException("Checked");
    }
}

클래스 프로세스의 위의 클래스 정의에서 메서드는execute실행 시간을 던질 수 있습니다.예외입니다만, 메서드 선언에서는 Runtime을 슬로우하도록 지정할 필요는 없습니다.예외입니다.

방법process는 체크된 예외를 슬로우하고 종류 MyException의 체크된 예외를 슬로우한다고 선언합니다.그렇게 하지 않으면 컴파일 오류가 됩니다.

위의 클래스 정의는 프로세스 클래스를 사용하는 코드에도 영향을 미칩니다.

new Process().execute()유효한 호출입니다.new Process().process()컴파일 에러가 발생.이는 클라이언트 코드가 처리 단계를 수행해야 하기 때문입니다.MyException(Say call to process()는 try/flock으로 묶을 수 있습니다).

런타임의 적절한 사용예외?

체크되지 않은 예외 - 논란:

클라이언트가 예외로부터 회복될 것으로 합리적으로 예상할 수 있는 경우는, 체크 마크가 붙은 예외로 합니다.클라이언트가 예외에서 복구하기 위해 아무것도 수행할 수 없는 경우 선택하지 않은 예외로 합니다.

체크되지 않은 예외는 에서 파생된 예외이며 체크되지 않은 예외는 에서 파생된 예외입니다.

왜 던질까?RuntimeException클라이언트가 예외로부터 복구하기 위해 아무것도 할 수 없는 경우이 기사에서는 다음을 설명합니다.

런타임 예외는 프로그래밍 문제로 인한 문제를 나타내므로 API 클라이언트코드가 이들로부터 회복되거나 어떤 방식으로든 처리될 것으로 합리적으로 기대할 수 없습니다.이러한 문제에는 0으로 나누는 것과 같은 산술 예외, Null 참조를 통해 개체에 액세스하려는 것과 같은 포인터 예외, 너무 크거나 너무 작은 인덱스를 통해 배열 요소에 액세스하려는 것과 같은 인덱싱 예외가 포함됩니다.

Oracle 문서:

요점은 다음과 같습니다.클라이언트가 예외로부터 회복될 것으로 합리적으로 예상할 수 있는 경우는, 체크 마크가 붙은 예외로 합니다.클라이언트가 예외에서 복구하기 위해 아무것도 수행할 수 없는 경우 선택하지 않은 예외로 합니다.

런타임 예외는 프로그래밍 문제로 인한 문제를 나타내므로 API 클라이언트코드가 이들로부터 회복되거나 어떤 방식으로든 처리될 것으로 합리적으로 기대할 수 없습니다.

Runtime Exceptions는 런타임 예외의 "부정하게 api를 사용한 예외"와 같습니다.Invalid State Exception, Negative Array Size예외, Nullpointer예외.

예외의 경우 복구 작업을 계속 수행할 수 있기 때문에 명시적으로 탐지해야 합니다.예외의 예: IOException, Timeout예외, PrintException...

간단히 말하면 클라이언트/사용자가 예외에서 복구할 수 있는 경우 체크예외로 하고 클라이언트가 예외에서 복구할 수 없는 경우 체크되지 않은 런타임으로 합니다.예외입니다.예: 런타임예외는 0으로 나누기 같은 프로그램 오류입니다. 프로그래머 자신 외에는 사용자가 아무것도 할 수 없습니다. 그러면 런타임입니다.예외입니다.

RuntimeException은 예외 클래스의 자식 클래스입니다.

이 클래스는 예외 클래스의 여러 자녀 클래스 중 하나입니다.런타임예외는 Java Virtual Machine의 정상 작동 중에 발생할 수 있는 예외의 슈퍼 클래스입니다.메서드는 실행 시 하위 클래스를 throws 절에서 선언할 필요가 없습니다.메서드 실행 중에 발생할 수 있지만 포착되지 않는 예외입니다.

계급은

java.displaces를 클릭합니다.물건

---syslog.syslog.syslog.던질 수 있다

---------------------------------------예외.

-----------------------------------------Runtime Exception(예외)

예외는 응용 프로그램 흐름에서 예기치 않은 이벤트를 처리하는 좋은 방법입니다.런타임예외는 컴파일러에 의해 선택 해제되지만, 컴파일에 필요한 오류를 검출하기 위해 API 클라이언트의 동작을 제어하기 위해 예외 클래스를 확장하는 예외를 사용하는 것이 좋습니다.또, 적절한 메뉴얼이 됩니다.

클린 인터페이스를 실현하려면 상속을 사용하여 응용 프로그램에 있는 다양한 유형의 예외를 서브클래스하고 부모 예외를 노출합니다.

두 가지 유형의 예외가 있습니다. 이러한 예외가 발생하면 선택된 예외에서 복구할 수 있습니다.런타임 예외는 복구할 수 없습니다. 런타임 예외는 프로그래밍 오류입니다. 프로그래머는 코드를 작성하는 동안 이 예외를 처리해야 합니다.이 예외를 계속 실행하면 잘못된 결과가 발생할 수 있습니다.런타임 예외는 사전 조건을 위반하는 것에 관한 것입니다.예를 들어 크기가 10인 배열이 있고 11번째 요소에 액세스하려고 하면 ArrayIndexOutOfBoundException이 느려집니다.

  1. 사용자 정의 예외는 [예외 선택] 또는 [예외 선택 취소]가 될 수 있습니다.이는 확장 대상 클래스에 따라 달라집니다.

  2. 예외 클래스로 확장하는 경우 사용자 정의 예외는 사용자 정의 예외일 수 있습니다.

  3. [ Run time Exception ]클래스로 확장하는 경우 사용자 정의 예외는 [Custom Checked Exception]으로 할 수 있습니다.

  4. 클래스를 정의하고 예외 또는 런타임 예외의 하위 클래스로 만듭니다.

언급URL : https://stackoverflow.com/questions/2190161/difference-between-java-lang-runtimeexception-and-java-lang-exception

반응형