기본 Java 및 다양한 유형의 Throwable에 대해 자세히 배우려고하는데 예외와 오류의 차이점을 누군가에게 알려 줄 수 있습니까?
답변
오류를 포착하거나 처리해서는 안됩니다 (가장 드문 경우 제외). 예외 처리의 빵과 버터는 예외입니다. 자바 독은 잘 설명 :
Error는 합리적인 응용 프로그램이 포착하려고하지 않아야하는 심각한 문제를 나타내는 Throwable의 하위 클래스입니다. 이러한 오류는 대부분 비정상적인 상태입니다.
Error
JavaDoc 주석 중 일부를 사용하여 의 서브 클래스를 살펴보십시오 .
AnnotationFormatError
-주석 파서가 클래스 파일에서 주석을 읽으려고 시도하고 주석이 잘못되었다고 판단 할 때 발생합니다.AssertionError
-어설 션이 실패했음을 나타냅니다.LinkageError
-LinkageError의 서브 클래스는 클래스가 다른 클래스에 대한 종속성을 가지고 있음을 나타냅니다. 그러나 후자의 클래스는 이전 클래스의 컴파일 후 호환되지 않게 변경되었습니다.VirtualMachineError
-Java Virtual Machine이 손상되었거나 계속 작동하는 데 필요한 자원이 부족함을 나타냅니다.
다음과 같은 세 가지 중요한 하위 범주가 있습니다 Throwable
.
Error
-충분히 심각한 문제가 발생하여 대부분의 응용 프로그램이 문제를 처리하려고하기보다는 충돌해야합니다.- 검사되지 않은 예외 (일명
RuntimeException
)-매우 자주NullPointerException
또는 잘못된 인수 와 같은 프로그래밍 오류 . 응용 프로그램은 때때로이Throwable
범주를 처리하거나 복구 할 수 있습니다. 또는 최소한 Thread의run()
메서드 에서이를 파악 하여 불만 사항을 기록한 후 계속 실행할 수 있습니다. - 검사 예외는 (다른 모든 일명) – 응용 프로그램은 같은 캐치 의미 나머지 뭔가를 할 수있을 것으로 예상된다
FileNotFoundException
및TimeoutException
…
답변
답변
오류는 알고있는 것처럼 응용 프로그램의 끝을 알리는 경향이 있습니다. 일반적으로 복구 할 수 없으며 VM을 종료해야합니다. 종료하기 전에 로그 나 표시 및 적절한 메시지를 제외하고는이를 캐치하지 마십시오.
예 : OutOfMemoryError- 프로그램을 더 이상 실행할 수 없기 때문에 할 수있는 일이 많지 않습니다.
예외는 종종 복구 가능하며, 그렇지 않은 경우에도 일반적으로 시도 된 작업이 실패했음을 의미하지만 프로그램은 계속 수행 할 수 있습니다.
예 : IllegalArgumentException- 유효하지 않은 데이터를 메소드에 전달하여 메소드 호출에 실패했지만 이후 작업에는 영향을 미치지 않습니다.
이들은 단순한 예이며 예외 만에 대한 또 다른 풍부한 정보가 있습니다.
답변
오류 –
Error
java의 s 유형java.lang.Error
입니다.- Java의 모든 오류는 검사되지 않은 유형입니다.
Error
런타임에 발생합니다. 그들은 컴파일러에게 알려지지 않을 것입니다.- 오류를 복구하는 것은 불가능합니다.
Error
주로 응용 프로그램이 실행되는 환경에서 발생합니다.- 예 :
java.lang.StackOverflowError
,java.lang.OutOfMemoryError
예외 –
Exception
java의 s 유형java.lang.Exception
입니다.Exception
s는 검사 유형과 선택되지 않은 유형을 모두 포함합니다.- 검사 된 예외는 런타임에 발생하기 때문에 검사되지 않은 예외는 컴파일러에 알려지지 않은 것으로 컴파일러에 알려져 있습니다.
try-catch
블록을 통해 예외를 처리하여 예외를 복구 할 수 있습니다 .Exception
주로 응용 프로그램 자체에 의해 발생합니다.- 예 : 검사 예외 :
SQLException
,IOException
체크되지 않는 예외 :ArrayIndexOutOfBoundException
,ClassCastException
,NullPointerException
더 읽을 거리 : http://javaconceptoftheday.com/difference-between-error-vs-exception-in-java/
답변
Error는 합리적인 응용 프로그램이 포착하려고하지 않아야하는 심각한 문제를 나타내는 Throwable의 하위 클래스입니다.
답변
Error
수업에 대한 설명 은 매우 분명합니다.
의
Error
하위 클래스Throwable
는 합리적인 응용 프로그램이 포착하려고 시도해서는 안되는 심각한 문제를 나타냅니다. 이러한 오류는 대부분 비정상적인 상태입니다.ThreadDeath
에러는 「정상」인 상태입니다 만, 또한의 하위 클래스Error
대부분의 어플리케이션에서는 캐치해서는 안되기 때문이다.메소드는 throws 절
Error
에서 메소드 실행 중에 발생하지만 포착되지 않는 서브 클래스를 선언 할 필요는 없습니다.
이러한 오류는 절대 발생하지 않아야하는 비정상적인 조건이기 때문입니다.
클래스Error
자체 에 대한 Java 자체 문서 에서 인용했습니다 .
간단히 말해서, Error
타당한 이유가 없다면 s를 잡아서는 안됩니다 . (예를 들어 서블릿에 메모리가 부족한 경우 웹 서버 구현이 중단되는 것을 방지하기 위해)
는 Exception
, 다른 한편으로는, 다른 현대적인 언어처럼 정상적인 예외입니다. Java API 문서 또는 온라인 또는 오프라인 자원에 자세한 설명이 있습니다.
답변
몇 가지 유사점과 클래스의 차이가있다 java.lang.Exception
및 java.lang.Error
.
유사점 :
-
첫 번째 – 두 클래스를 확장
java.lang.Throwable
하고 다음과 같은 오류를 처리 할 때 공통적 인 방법의 많은 결과로 상속이 사용되는 :getMessage
,getStackTrace
,printStackTrace
등. -
둘째, 하위 클래스이므로
java.lang.Throwable
다음과 같은 속성을 상속합니다.-
Throwable 자체 및 하위 클래스 (포함
java.lang.Error
)는throws
키워드를 사용하여 메소드 예외 목록에서 선언 할 수 있습니다 . 이러한 선언은 필요java.lang.Exception
와 서브 클래스를 위해java.lang.Throwable
,java.lang.Error
그리고java.lang.RuntimeException
자신의 서브 클래스는 선택 사항입니다. -
절
java.lang.Throwable
에서 하위 클래스 만 사용할 수 있습니다catch
. -
java.lang.Throwable
하위 클래스 만 키워드-와 함께 사용할 수 있습니다throw
.
-
이 속성의 결론은 두 가지 모두 java.lang.Error
를 java.lang.Exception
따르며 메서드 헤더에 선언 할 수 있으며 catch
절에있을 수 있으며 keyword와 함께 사용할 수 있습니다 throw
.
차이점 :
-
첫 번째-개념상의 차이 :
java.lang.Error
JVM에서 발생하도록 설계되었으며 심각한 문제를 나타내며 잡히지 않고 프로그램 실행을 중지하려고합니다 (그러나 다른java.lang.Throwable
후속 작업 에서도 가능합니다 ).에 대한 javadoc 설명 의 구절
java.lang.Error
:… 적당한 응용 프로그램이 포착하려고 시도해서는 안되는 심각한 문제를 나타냅니다.
반대로
java.lang.Exception
, 프로그램 실행을 종료하지 않고 프로그래머가 예상하고 처리 할 수있는 오류를 나타내도록 설계되었습니다.에 대한 javadoc 설명 의 구절
java.lang.Exception
:… 적합한 응용 프로그램이 잡을 수있는 조건을 나타냅니다.
- 초 사이의 차이
java.lang.Error
및java.lang.Exception
그는 먼저 간주 체크 컴파일 시간 예외 검사 용 예외. 결과 코드가 throwjava.lang.Error
되거나 해당 하위 클래스가이 오류를 메서드 헤더에 선언 할 필요가 없습니다.java.lang.Exception
메소드 헤더에 필요한 선언을 던지는 동안