Java Throwable VS 예외 클래스
이 기사는 Java에서 Throwable
및 Exception
클래스를 사용하는 경우를 알려줍니다. 두 클래스 모두 오류 및 예외를 처리하는 생성자와 메서드가 있습니다.
먼저 두 클래스의 Throwable
및 Exception
소개를 보고 두 클래스의 차이점을 알아봅니다.
Java의 Throwable
클래스 소개
java.lang
클래스의 계층 구조에서 Throwable
클래스는 Error
및 Exception
클래스의 상위 또는 상위 클래스입니다. 이는 Error
및 Exception
이 Java의 Throwable
클래스에 의해 상속됨을 의미합니다.
그것은 Throwable
클래스가 JVM(Java Virtual Machine)에서 생성된 모든 오류 및 예외(스택 추적 오류 또는 컴파일 또는 런타임 예외)를 포착할 수 있다는 결론을 내립니다.
또한 Throwable
클래스는 정의된 java.lang
라이브러리에서 Serializable
인터페이스를 구현합니다.
사용자는 아래에서 Throwable
클래스의 정의를 볼 수 있습니다.
public class Throwable extends Object implements Serializable
위의 클래스 정의에서 사용자는 Throwable
클래스가 Object
클래스를 상속하고 Serializable
인터페이스를 구현함을 알 수 있습니다.
Throwable
구문:
try {
// some code
} catch (Throwable e) {
// handle errors or exceptions
}
Throwable
클래스에는 아래에 설명된 오버로드된 생성자가 포함되어 있습니다.
생성자
Throwable() |
이 생성자는 기본 오류 메시지와 함께 Throwable 의 새 인스턴스를 만듭니다. |
Throwable(String errorMessage) |
이 생성자는 errorMessage 메시지와 함께 Throwable 의 새 인스턴스를 생성합니다. |
Throwable(String errorMessage, Throwable errorCause) |
이 생성자는 또한 오류 메시지의 원인을 가져와 errorMessage 및 errorCause 를 사용하여 Throwable 의 새 인스턴스를 생성합니다. |
Throwable(Throwable errorCause) |
이 생성자는 매개변수로 전달된 특정 원인을 사용하여 Throwable 의 새 인스턴스를 생성합니다. |
행동 양식
여기서는 Throwable
클래스의 몇 가지 메서드를 설명했습니다.
toString() |
오류에 대한 설명을 문자열 형식으로 반환합니다. |
getMessage() |
오류 메시지를 문자열 형식으로 반환합니다. |
getCause() |
현재 Throwable 인스턴스의 원인을 반환합니다. |
getLocalizedMessage() |
Throwable 의 현지화된 설명을 반환합니다. |
getStackTrace() |
스택 추적에 대한 정보를 제공합니다. |
printStackTrace() |
Throwable 의 현재 인스턴스를 인쇄합니다. |
setStackTrace(StackTraceElement[] stackTrace) |
getStackTrace() 메서드에 의해 반환된 스택 추적 요소를 설정할 수 있습니다. |
initCause(Throwable 원인) |
사용자가 현재 Throwable 의 원인을 초기화할 수 있습니다. |
오류
오류
클래스에는 프로그램 실행을 중지시키는 오류가 포함됩니다.
StackOverflowError |
스택 또는 힙 오버플로가 발생할 때 발생합니다. |
AssertionError |
어설션 실패로 인해 발생합니다. |
VirtualMachineError |
Java Virtual Machine의 모든 오류를 캐시합니다. |
LinkageError |
연결 문제로 인해 발생합니다. |
OutOfMemoryError |
장치의 메모리 부족 또는 JVM의 메모리 부족으로 인해 발생합니다. |
Java의 예외
클래스 소개
Java에서 예외는 런타임 또는 컴파일 시간에 발생하는 원치 않는 이벤트입니다. 예외는 컴파일 타임에 잡을 수 있는 확인된 예외라고 하며, 예외는 실행 중에만 잡을 수 있는 확인되지 않은 예외라고 합니다.
Throwable
구문:
try {
// some code
} catch (Exception e) {
// handle Exceptions only
}
여기서 우리는 Java에서 몇 가지 유형의 예외를 정의했습니다.
RuntimeException |
확인되지 않은 예외의 모든 클래스는 이를 상속합니다. |
NullPointerException |
null 또는 정의되지 않은 값으로 인해 발생합니다. |
ArithmeticException |
산술 연산의 실패로 인해 발생합니다. |
ArrayIndexOutOfBoundsException |
길이보다 큰 배열 인덱스에 액세스하려고 할 때 발생합니다. |
NoSuchMethodException |
메서드가 정의되지 않은 경우 발생합니다. |
IOException |
입/출력 작업의 실패로 인해 발생합니다. |
ClassNotFoundException |
클래스가 정의되지 않은 경우 발생합니다. |
SQLException |
데이터베이스 작업 실패가 이 예외의 원인입니다. |
프로그래머는 Java의 Exception
클래스를 상속하여 예외를 정의할 수도 있습니다.
Throwable
또는 Exception
중 어떤 클래스를 사용해야 합니까?
Throwable
및 Exception
클래스의 구문을 살펴보면 try-catch
블록과 함께 둘 다 사용하고 있기 때문에 첫눈에 비슷해 보입니다.
Throwable
클래스의 인스턴스는 Throwable
의 하위 클래스이므로 오류 및 예외를 catch할 수 있지만 Exceptions
인스턴스는 프로그램에서 발생하는 예외만 catch할 수 있습니다.
일반적인 Java 애플리케이션에서는 드물게 LinkageError
, VirtualMachineError
, OutOfMemoryError
등과 같은 오류가 발생합니다. 주로 예외는 사용자의 실수로 인해 발생합니다.
따라서 Throwable
클래스보다는 Exception
클래스의 인스턴스를 사용하는 것이 가장 좋습니다.