이상한 처리의 작은 배치
2480 단어 이상
예를 들어 어떤 이상은 처리할 수 있을 뿐, 어떤 것은 던질 수 있다.
여기 되게 잘 말해요. 이상한 차이.
Throwable는 모든 Java 프로그램에서 오류 처리된 상위 클래스로 Error와 Exception의 두 가지 유형이 있습니다.
Error: JVM에서 감지한 예기치 못한 오류를 나타냅니다. JVM 계층에 속하는 심각한 오류이므로 JVM을 계속 실행할 수 없습니다. 따라서 이것은 포착할 수 없고 복구할 수 없습니다. 오류 정보만 표시할 수 있습니다.
Exception: 복구 가능한 예외를 나타냅니다. 이것은 포착할 수 있습니다.
Java는 두 가지 주요 이상을 제공합니다: runtime exception과 checked exception.checked 이상, 즉 우리가 자주 만나는 IO 이상, 그리고 SQL 이상은 모두 이런 이상이다.이런 이상에 대해 JAVA 컴파일러는 발생한 이상에 대해 반드시 진행해야 한다고 강요한다
catch .그래서 이런 이상에 직면하면 우리가 원하든 원하지 않든 간에catch 블록을 많이 써서 가능한 이상을 처리할 수 밖에 없다.
그러나 또 다른 이상: 런타임 exception, 실행 시 이상이라고도 하는데, 우리는 처리하지 않을 수 있습니다.이런 이상이 발생하면 항상 가상 기기가 관리한다.예를 들어 우리는 지금까지 Null Pointer Exception 이상을 처리한 적이 없다. 이것은 실행 시 이상이며, 이런 이상은 가장 흔히 볼 수 있는 이상 중의 하나이다.
운행 시 이상이 발생하면 시스템은 이상을 상층부로 던져 처리 코드를 만나게 된다.처리 블록이 없으면 맨 위쪽으로, 다중 스레드면Thread로 이동합니다.run () 이 던져지고, 단일 라인이면main () 이 던져집니다.던져진 후에 라인이라면 이 라인도 퇴출된다.만약 메인 프로그램이 던진 이상이라면, 이 전체 프로그램도 퇴출될 것이다.실행 중 예외는
Exception의 하위 클래스는 일반적인 이상한 특징도 있어 Catch에
블록 처리의단지 왕왕 우리가 그에게 처리하지 않을 뿐이다.즉, 실행할 때 이상을 처리하지 않으면, 실행할 때 이상이 발생하면, 라인이 중단되거나, 메인 프로그램이 종료됩니다.
종료하지 않으려면, 모든 운행 시 이상을 포착해야 하며, 이 처리 라인을 종료하지 않도록 해야 합니다.대기열에 이상 데이터가 발생했습니다. 정상적인 처리는 이상 데이터를 버리고 로그를 기록하는 것입니다.이상 데이터로 인해 아래의 정상적인 데이터 처리에 영향을 주어서는 안 된다.
이 장면에서 이렇게 처리하는 것은 비교적 좋은 응용일 수 있지만, 모든 장면에서 네가 반드시 이렇게 해야 한다는 것은 아니다.만약 다른 장면에서 오류가 발생했다면, 프로그램을 종료하는 것이 비교적 좋으면, 실행할 때의 이상을 잘 상관하지 않을 수 있다
또는 이상한 처리를 통해 현식 제어 프로그램을 종료합니다.
이상 처리의 목표 중 하나는 프로그램을 이상에서 회복하기 위한 것이다.
/**
* .
*
*/
public class Exceptions {
/**
* CheckedException UncheckedException.
*/
public static RuntimeException unchecked(Exception e) {
if (e instanceof RuntimeException) {
return (RuntimeException) e;
} else {
return new RuntimeException(e);
}
}
/**
* ErrorStack String.
*/
public static String getStackTraceAsString(Exception e) {
StringWriter stringWriter = new StringWriter();
e.printStackTrace(new PrintWriter(stringWriter));
return stringWriter.toString();
}
/**
* .
*/
public static boolean isCausedBy(Exception ex, Class<? extends Exception>... causeExceptionClasses) {
Throwable cause = ex;
while (cause != null) {
for (Class<? extends Exception> causeClass : causeExceptionClasses) {
if (causeClass.isInstance(cause)) {
return true;
}
}
cause = cause.getCause();
}
return false;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Springboot 사용자 정의 예외 처리 상세 정보배경 Springboot은 기본적으로 이상한 처리를 모델 AndView에 집중시켰지만, 프로젝트의 실제 과정에서 이렇게 하면 우리의 요구를 만족시킬 수 없습니다.구체적인 사용자 정의 이상 처리는 다음과 같다. 구체적...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.