JAVA/포스팅

자바 try-catch문

짜집퍼박사(짜박) 2023. 11. 14. 01:24

자바에서 try-catch 문은 예외 처리를 위해 사용되는 구문입니다. 이 구문은 예외가 발생할 수 있는 코드를 try 블록에 포함하고, 예외가 발생했을 때 처리할 코드를 catch 블록에 작성합니다.

다음은 try-catch 문의 기본 구조입니다.

try {
    // 예외가 발생할 수 있는 코드
} catch (예외종류1 변수1) {
    // 예외종류1에 대한 처리 코드
} catch (예외종류2 변수2) {
    // 예외종류2에 대한 처리 코드
} catch (예외종류3 변수3) {
    // 예외종류3에 대한 처리 코드
} finally {
    // 항상 실행되어야 하는 코드 (예외 발생 여부와 관계없이)
}

 

- try 블록 : 예외가 발생할 수 있는 코드를 포함합니다. 이 블록 내에서 예외가 발생하면 예외 처리를 시작합니다.
- catch 블록 : 예외가 발생했을 때 해당 예외를 처리하는 코드를 포함합니다. 여러 개의 catch 블록을 사용하여 여러 종류의 예외를 처리할 수 있습니다. 각 catch 블록은 예외 종류와 처리 코드를 지정합니다.
- finally 블록 : 예외가 발생하든 발생하지 않든 항상 실행되어야 하는 코드를 포함합니다. 주로 리소스의 정리 등에 활용됩니다.


예시를 통해 설명하겠습니다.

import java.util.Scanner;

public class Example {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        try {
            System.out.print("나누어질 숫자를 입력하세요: ");
            int numerator = scanner.nextInt();

            System.out.print("나눌 숫자를 입력하세요: ");
            int denominator = scanner.nextInt();

            int result = divide(numerator, denominator);
            System.out.println("나누기 결과: " + result);
        } catch (ArithmeticException e) {
            System.err.println("0으로 나눌 수 없습니다. 다시 시도하세요.");
        } catch (Exception e) {
            System.err.println("예외가 발생했습니다: " + e.getMessage());
        } finally {
            scanner.close(); // 항상 실행되어야 하는 리소스 정리 코드
        }
    }

    // 나누기 메서드
    private static int divide(int numerator, int denominator) {
        return numerator / denominator;
    }
}

이 예제에서 try 블록은 사용자로부터 입력을 받아 나누기 연산을 수행합니다. 만약 사용자가 0을 입력하면 ArithmeticException이 발생하게 되고, 해당 예외를 처리하는 catch 블록이 실행됩니다. 다른 예외가 발생하면 일반적인 Exception 클래스를 통해 처리됩니다. finally 블록은 항상 실행되어 Scanner 리소스를 닫습니다.

참고로, 예외 처리에서 가장 구체적인 예외부터 처리해야 합니다. 즉, 가장 하위 클래스의 예외부터 catch 블록에 배치하는 것이 좋습니다. 위의 예제에서는 ArithmeticException을 먼저 처리하고, 그 후에 일반적인 Exception을 처리하고 있습니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 예외의 발생과 catch블럭  (0) 2023.11.14
자바 try-catch문에서의 흐름  (0) 2023.11.14
자바 예외 클래스의 계층구조  (0) 2023.11.14
자바 예외(Exception)  (0) 2023.11.14
자바 익명 내부 클래스  (0) 2023.11.14