programing

예외와 오류의 차이

itsource 2022. 8. 8. 16:13
반응형

예외와 오류의 차이

기본적인 자바와 다양한 유형의 Throwables에 대해 자세히 알아보려고 하는데, 예외와 오류의 차이점을 알려주실 수 있나요?

오류를 발견하거나 처리해서는 안 됩니다(최소한의 경우를 제외합니다).예외는 예외 처리의 빵과 버터이다.Javadoc은 다음과 같이 설명합니다.

오류는 적절한 응용 프로그램이 탐지하지 않아야 하는 심각한 문제를 나타내는 Throwable의 하위 클래스입니다.이러한 오류는 대부분 비정상적인 상태입니다.

의 서브클래스를 몇 가지 살펴보겠습니다.ErrorJavaDoc의 코멘트를 몇 가지 인용하고 있습니다.

  • AnnotationFormatError- 주석 파서가 클래스 파일에서 주석을 읽으려고 시도하고 주석의 형식이 잘못되었다고 판단할 때 느려집니다.
  • AssertionError- 어설션이 실패했음을 나타내기 위해 던져집니다.
  • LinkageError- Linked Error 서브클래스는 클래스가 다른 클래스에 어느 정도 의존하고 있음을 나타냅니다.다만, 후자의 클래스는 이전 클래스의 컴파일 후에 비호환적으로 변경되었습니다.
  • VirtualMachineErrorJava Virtual Machine이 고장났거나 동작을 계속하기 위해 필요한 리소스가 부족함을 나타냅니다.

에는 3개의 중요한 서브카테고리가 있습니다.Throwable:

  • Error- 어플리케이션 크래시가 발생할 정도로 심각한 문제가 발생하고 있습니다.이 문제를 해결하려고 하는 것이 아니라 크래시가 발생할 가능성이 가장 높은 어플리케이션입니다.
  • 체크되지 않은 예외(일명)RuntimeException) - 프로그래밍 오류(예:NullPointerException또는 불법적인 논쟁입니다.응용 프로그램이 이 문제를 처리하거나 복구하는 경우가 있습니다.Throwable카테고리 -- 또는 적어도 스레드에서 캐치합니다.run()method, commission을 기록하고 실행을 계속합니다.
  • 체크된 예외(다른 모든 것) - 응용 프로그램은 다음을 포착하여 의미 있는 작업을 수행할 수 있어야 합니다.FileNotFoundException그리고.TimeoutException...

이 슬라이드는 @georgios-gousios에 의한 Java 예외 계층을 보여 줍니다.Java에서의 오류와 예외의 차이를 간결하게 설명합니다.

Java Exception Hierarchy

에러는, 애플리케이션의 종료를 나타내는 경우가 있습니다.일반적으로는 에서 복구할 수 없으며 VM이 종료됩니다.종료하기 전에 로그 또는 표시와 적절한 메시지를 보내는 것 이외에는 이들을 포착하지 마십시오.

예: Out Of Memory Error - 프로그램을 실행할 수 없기 때문에 할 수 있는 일이 많지 않습니다.

예외는 복구할 수 있는 경우가 많으며, 복구할 수 없는 경우에도 일반적으로 시도된 작업이 실패했음을 의미하지만 프로그램은 계속 진행할 수 있습니다.

예: 부정 인수예외 - 메서드 호출이 실패하도록 잘못된 데이터를 메서드에 전달했지만 이후 작업에는 영향을 주지 않습니다.

이것들은 단순한 예이며, 예외에만 관한 또 다른 풍부한 정보가 있습니다.

오류 -

  1. Errorjava의 s는 유형입니다.java.lang.Error.
  2. Java의 모든 오류는 선택되지 않은 유형입니다.
  3. Error실행 시 발생합니다.컴파일러에서는 인식되지 않습니다.
  4. 에러로부터 회복하는 것은 불가능하다.
  5. Error는 대부분 어플리케이션이 실행되고 있는 환경에 의해 발생합니다.
  6. 예: java.lang.StackOverflowError,java.lang.OutOfMemoryError

예외 -

  1. Exceptionjava의 s는 유형입니다.java.lang.Exception.
  2. Exceptions에는 체크된 유형과 체크되지 않은 유형이 모두 포함됩니다.
  3. 체크된 예외는 실행 시 발생하므로 체크되지 않은 예외는 컴파일러에 인식되지 않습니다.
  4. 다음을 통해 예외를 처리함으로써 예외로부터 복구할 수 있습니다.try-catch블록.
  5. Exception는 주로 어플리케이션 자체에 의해 발생합니다.
  6. 예: 선택된 예외:SQLException,IOException
    선택되지 않은 예외:ArrayIndexOutOfBoundException,ClassCastException,NullPointerException

자세한 것은, http://javaconceptoftheday.com/difference-between-error-vs-exception-in-java/ 를 참조해 주세요.

Sun의 표현은 다음과 같이 말합니다.

오류는 적절한 응용 프로그램이 탐지하지 않아야 하는 심각한 문제를 나타내는 Throwable의 하위 클래스입니다.

의 설명Error클래스는 매우 명확합니다.

Error의 하위 클래스입니다.Throwable이는 합리적인 어플리케이션에서 검출하지 말아야 할 중대한 문제를 나타냅니다.이러한 오류는 대부분 비정상적인 상태입니다.ThreadDeath오류는 '정상' 상태이긴 하지만, 또한 의 하위 클래스입니다.Error왜냐하면 대부분의 어플리케이션에서는 검출을 시도해서는 안 되기 때문입니다.

메서드는 throws 절에서 다음 서브클래스를 선언할 필요가 없습니다.Error이러한 오류는 발생해서는 안 되는 비정상적인 상태이기 때문에 메서드 실행 중에 느려질 수 있지만 잡히지 않습니다.

Java의 클래스 자체 문서에서 인용되었습니다.

'잡으면 안 ', '잡으면 안 요.'Error(예를 들어 서블릿의 메모리가 부족할 경우 웹 서버 구현이 크래쉬하지 않도록 하기 위해 등)를 실행합니다.

Exception반면에, 그것은 다른 현대 언어에서와 같이 그저 평범한 예외일 뿐이다.자세한 설명은 Java API 설명서 또는 온라인 또는 오프라인 리소스에서 찾을 수 있습니다.

에는 몇 .java.lang.Exception ★★★★★★★★★★★★★★★★★」java.lang.Error.

유사점:

  • - 두 가 모두 확장됩니다.java.lang.Throwable, 다음과 같은 를 처리할 때 됩니다.getMessage,getStackTrace,printStackTrace기타 등등.

  • 째의 로서 브 second의java.lang.Throwable 다.

    • 및그를 포함한다)java.lang.Error)은는)을 사용하여 메서드 목록에서 할 수 .throws키워드를 지정합니다.은 오직 한음음음음음음음음음음음음음음음음음 such such such such such such such such 에 대해서만 필요합니다.java.lang.Exceptionjava.lang.Throwable,java.lang.Error ★★★★★★★★★★★★★★★★★」java.lang.RuntimeException서브클래스는 옵션입니다.

    • 만.java.lang.Throwable to and and and and and and and and and and and and and and and and and and and and and and and and and and 。catch절을 클릭합니다.

    • 만.java.lang.Throwable키워드를 지정하여 할 수 .throw.

은 두 가지 모두 나오는 입니다.java.lang.Error ★★★★★★★★★★★★★★★★★」java.lang.Exception헤더로 할 수 또, 「」로할 수 .catch은 키워드 절과 할 수 .throw.

차이점:

  • 번째 - 첫 - - - - 이 first first first first:java.lang.Error 실행을 실행을 단, JVM에 합니다).java.lang.Throwable★★★★★★★★★★★★★★★★★★」

    javadoc 설명의 한 구절java.lang.Error:

    ...합리적인 어플리케이션에서는 검출하지 않는 중대한 문제를 안고 있습니다.

    ★★★★★java.lang.Exception프로그램 실행을 종료하지 않고 프로그래머가 처리할 수 있는 오류를 나타내도록 설계되었습니다.

    javadoc 설명의 한 구절java.lang.Exception:

    ...합리적인 어플리케이션에서 포착하고 싶은 조건을 충족시킵니다.

  • 번째 '' ''의 차이점''java.lang.Error ★★★★★★★★★★★★★★★★★」java.lang.Exception이는 처음에 컴파일 시간 예외 체크의 체크되지 않은 예외로 간주되었습니다.결과 코드 투척java.lang.Error또는 그 서브클래스는 메서드헤더에 이 오류를 선언할 필요가 없습니다.★★★★★★★★★★를java.lang.Exception을 사용법

슬로우 가능 및 후속 클래스 다이어그램(속성과 메서드는 생략됨).enter image description here

IMO 에러는, 애플리케이션의 장해의 원인이 되는 것이므로, 처리하지 말아 주세요.예외는 예기치 않은 결과를 초래할 수 있지만 복구할 수 있습니다.

예:

프로그램의 메모리가 부족하면, 애플리케이션을 속행할 수 없기 때문에, 에러가 됩니다.다만, 프로그램이 잘못된 입력 타입을 받아들인 경우는 예외입니다.프로그램은 이 타입을 처리하고 올바른 입력 타입을 수신하도록 리다이렉트 할 수 있습니다.

오류는 주로 응용 프로그램이 실행 중인 환경에 의해 발생합니다.예를 들어 Out Of Memory Error는 JVM의 메모리가 부족할 때 발생하거나 Stack Overflow Error는 스택 오버플로우가 발생할 때 발생합니다.

예외는 주로 애플리케이션 자체에 의해 발생합니다.예를 들어 Null Pointer 입니다.응용 프로그램이 늘 객체에 액세스하려고 할 때 예외가 발생하거나 호환되지 않는 클래스 유형을 캐스팅하려고 할 때 ClassCastException이 발생합니다.

출처 : Java에서의 오류와 예외의 차이

다음은 Java API에서 오류와 예외가 나타내는 내용을 요약한 것입니다.

오류는 적절한 응용 프로그램이 탐지하지 않아야 하는 심각한 문제를 나타내는 Throwable의 하위 클래스입니다.이러한 오류는 대부분 비정상적인 상태입니다.ThreadDeath 오류는 "정상" 상태이지만 대부분의 응용 프로그램이 ThreadDeath 오류를 감지하려고 하면 안 되기 때문에 오류의 하위 클래스이기도 합니다.

메서드는 메서드 실행 중에 느려질 수 있지만 검출되지 않는 에러 서브클래스를 슬로우 절에서 선언할 필요가 없습니다.이는 이러한 에러는 발생해서는 안 되는 비정상적인 상태이기 때문입니다.

OTOH, 예외에 대해 Java API는 다음과 같이 말합니다.

클래스 예외 및 해당 서브클래스는 적절한 응용 프로그램이 포착하려는 조건을 나타내는 슬로우 가능 형식입니다.

오류는 응용 프로그램 또는 프로그램이 실행되는 환경에 의해 발생합니다.대부분의 경우 응용 프로그램 또는 프로그램이 종료되므로 복구되지 않을 수 있습니다.Javadoc은 JVM과 같은 환경에서 이러한 오류가 발생하면 종료되므로 이러한 오류를 굳이 탐지할 필요가 없다고 조언했습니다.

::VirtualMachineErrorJava Virtual Machine이 고장났거나 동작을 계속하기 위해 필요한 리소스가 부족함을 나타냅니다. OutOfMemoryError하거나 JVM의 메모리가 부족할 때 합니다.StackOverflowError스택이 오버될 때 발생합니다.

예외는 어플리케이션 또는 프로그램 자체에 의해 발생하며, 사용자의 실수로 인해 발생할 수 있습니다.대부분의 경우 복구가 가능하며 응용 프로그램은 계속 실행됩니다.이러한 오류를 감지하여 응용 프로그램 또는 프로그램의 비정상적인 종료를 방지하거나 예외 메시지를 사용자 정의하여 사용자에게 기본 보기 흉한 예외 메시지 대신 올바른 형식의 메시지를 볼 수 있도록 하는 것이 좋습니다.

::NullPointerException 잘못된 데이터 를 호출하려고 .또는 존재하지 않는 인덱스를 사용하여 배열에 액세스하려고 하거나 잘못된 데이터 또는 매개 변수를 사용하여 함수를 호출합니다.

언급URL : https://stackoverflow.com/questions/912334/differences-between-exception-and-error

반응형