본문 바로가기
Programming/Java

Java 예외 처리 마스터하기: Try-Catch 블록 및 Throws 절에 대한 종합 가이드

by Devsaurus 2023. 12. 23.
728x90

Java의 예외 처리는 프로그램이 예상치 못한 런타임 오류나 예외 조건을 적절하게 처리할 수 있도록 하는 메커니즘입니다. Java 예외 처리의 두 가지 주요 구성 요소는 try-catch 블록과 throws 절입니다.


1. Try-Catch Block :

try-catch 블록은 예외가 발생할 수 있는 코드 섹션을 묶는 데 사용됩니다. 이는 두 부분으로 구성됩니다.


- Try Block

예외를 일으킬 수 있는 코드는 try 블록 안에 위치합니다.
try 블록 내에서 예외가 발생하면 예외 개체를 생성합니다.

- Catch Block :

catch 블록은 예외를 처리하는 데 사용됩니다. 포착할 수 있는 예외 유형을 지정합니다.
여러 개의 catch 블록이 단일 try 블록 뒤에 따라와 다양한 유형의 예외를 처리할 수 있습니다.
try 블록에서 발생한 예외 유형에 따라 적절한 catch 블록이 실행됩니다.

예:

2. Throws 절:

throws 절은 메소드 시그니처에서 메소드가 특정 유형의 예외를 발생시킬 수 있음을 선언하는 데 사용됩니다. 예외를 처리하지 않습니다. 오히려 처리 책임을 호출 메서드에 위임하거나 예외를 호출 스택 위로 전파합니다.


예:

public void someMethod() throws CustomException {
    // Code that may throw CustomException
    if (someCondition) {
        throw new CustomException("This is a custom exception");
    }
}

 


주요 차이점:

책임:
try-catch: 예외가 발생한 블록 내에서 로컬로 예외를 처리합니다.
throws: 메소드가 예외를 발생시킬 수 있지만 처리하지는 않음을 선언합니다.

사용법:
try-catch: 예외가 발생한 지점에서 예외를 처리하는 데 사용됩니다.
throws: 메소드 시그니처에 사용되어 메소드가 특정 예외를 발생시킬 수 있음을 나타냅니다.

여러 예외 처리:
try-catch: 별도의 catch 블록에서 다양한 유형의 예외 처리를 지원합니다.
throws: 메소드가 던질 수 있는 예외 유형을 선언합니다.

흐름 제어:
try-catch: 로컬 흐름 제어를 도입하고 예외를 처리한 후에도 프로그램이 계속 실행될 수 있도록 합니다.
throws: 예외 처리 책임을 호출 메서드에 넘깁니다.


각 사용 시기:
- 다음과 같은 경우 try-catch를 사용하세요

로컬 수준에서 예외를 처리하고 프로그램 실행을 계속하려고 합니다.
다양한 유형의 예외에는 다양한 처리 메커니즘이 필요합니다.

- 다음과 같은 경우 throws를 사용하세요.

메소드가 특정 유형의 예외를 처리하지 않고 발생시킬 수 있음을 선언하려고 합니다.
예외 처리 책임을 호출 메서드에 위임하거나 예외를 호출 스택 위로 전파하려고 합니다.

 


많은 경우 'try-catch'와 'throws'의 조합이 사용됩니다. 여기서 메소드는 'throws' 절에서 특정 예외를 선언하고 'try-catch' 블록을 사용하여 로컬로 다른 예외를 처리할 수 있습니다. 이는 Java의 예외 처리에 대한 유연하고 효과적인 접근 방식을 허용합니다.

728x90