이상한 처리의 작은 배치

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;
	}
}

좋은 웹페이지 즐겨찾기