문제

때때로 나는 본다

try {

} catch(Throwable e) {

}

그리고 어떨 때에는

try {

} catch(Exception e) {

}

차이점은 무엇입니까?

도움이 되었습니까?

해결책

잡아서 Throwable 여기에는 서브 클래스가 포함됩니다 Error. 당신은 일반적으로 그렇게 할 수있는 모든 것을 기록하거나 처리하려는 스레드의 가장 높은 "Catch"레벨을 제외하고는 일반적으로 그렇게해서는 안됩니다. Framework 유형 응용 프로그램 (예 : 응용 프로그램 서버 또는 테스트 프레임 워크)에서 더 일반적으로 알려지지 않은 코드를 실행할 수 있고 영향을받지 않아야합니다. 아무것 그것은 가능한 한 그 코드에 문제가 있습니다.

다른 팁

첫 번째는 모든 서브 클래스를 잡습니다 Throwable (여기에는 포함됩니다 Exception 그리고 Error), 두 번째는 모든 서브 클래스를 잡습니다 Exception.

Error 프로그래밍 방식으로는 어떤 식 으로든 복구 할 수 없으며 일반적으로 로깅 목적 (다시 통과하는)을 제외하고는 잡히지 않아야합니다. Exception 프로그래밍 방식으로 복구 할 수 있습니다. 서브 클래스 RuntimeException 프로그래밍 오류를 나타내며 일반적으로 잡히지 않아야합니다.

Throwable 슈퍼 클래스입니다 Exception 만큼 잘 Error. 정상적인 경우 우리는 항상 하위 클래스를 잡아야합니다 Exception, 근본 원인이 손실되지 않도록합니다.

Java 코드를 제어하지 않는 문제가 발생할 가능성이있는 특별한 경우에만 잡아야합니다. Error 또는 Throwable.

나는 기본 라이브러리가로드되지 않았다는 것을 깃발하기 위해 던질 수있는 것을 기억합니다.

Thowable 실제로 모든 것을 잡는다. Thread.stop() 방법. 그래서 잡아서 Throwable 적어도 캐치 블록을 통과하지 않고는 시도 블록을 떠나지 않을 것이라고 확신 할 수 있지만 처리 할 준비가되어 있어야합니다. OutOfMemoryError 그리고 InternalError 또는 StackOverflowError.

매력 있는 것 Throwable 모든 종류의 요청을 외부 코드에 위임하는 외부 서버 루프에 가장 유용하지만 서비스를 계속 유지하기 위해 결코 종료되지 않을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top