Java Throwable VS 예외 클래스

Shubham Vora 2023년10월12일
  1. Java의 Throwable 클래스 소개
  2. Java의 예외 클래스 소개
  3. Throwable 또는 Exception 중 어떤 클래스를 사용해야 합니까?
Java Throwable VS 예외 클래스

이 기사는 Java에서 ThrowableException 클래스를 사용하는 경우를 알려줍니다. 두 클래스 모두 오류 및 예외를 처리하는 생성자와 메서드가 있습니다.

먼저 두 클래스의 ThrowableException 소개를 보고 두 클래스의 차이점을 알아봅니다.

Java의 Throwable 클래스 소개

java.lang 클래스의 계층 구조에서 Throwable 클래스는 ErrorException 클래스의 상위 또는 상위 클래스입니다. 이는 ErrorException이 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) 이 생성자는 또한 오류 메시지의 원인을 가져와 errorMessageerrorCause를 사용하여 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 중 어떤 클래스를 사용해야 합니까?

ThrowableException 클래스의 구문을 살펴보면 try-catch 블록과 함께 둘 다 사용하고 있기 때문에 첫눈에 비슷해 보입니다.

Throwable 클래스의 인스턴스는 Throwable의 하위 클래스이므로 오류 및 예외를 catch할 수 있지만 Exceptions 인스턴스는 프로그램에서 발생하는 예외만 catch할 수 있습니다.

일반적인 Java 애플리케이션에서는 드물게 LinkageError, VirtualMachineError, OutOfMemoryError 등과 같은 오류가 발생합니다. 주로 예외는 사용자의 실수로 인해 발생합니다.

따라서 Throwable 클래스보다는 Exception 클래스의 인스턴스를 사용하는 것이 가장 좋습니다.

작가: Shubham Vora
Shubham Vora avatar Shubham Vora avatar

Shubham is a software developer interested in learning and writing about various technologies. He loves to help people by sharing vast knowledge about modern technologies via different platforms such as the DelftStack.com website.

LinkedIn GitHub

관련 문장 - Java Exception