Blog blog = new Korea()

Java

[Java] 예외를 다루는 몇 가지 방법

newkr 2022. 9. 21. 01:26
728x90

2022.09.20 - [Java] - [Java] 예외 처리의 이유와 종류

 

[Java] 예외 처리의 이유와 종류

🤗예외는 싫은데 예외 처리는 좋아요  Error와 같은 예외가 발생하는 경우 프로그램은 정상적으로 작동하기 어렵다. 대부분의 경우에서 예외는 프로그램이 정상적으로 동작하지 않기 때문에,

codari.tistory.com

💻 예외 처리 방법은 뭘까?

 저번에는 예외 처리의 이유와 종류에 대해서 조금 알아봤다. 이번에는 예외를 처리하는 몇 가지 방식에 대해서 알아보려고 한다. 사실 몇 가지 방식이라고 얘기하기도 무안한 것이 try-catch문이 전부이기 때문이다. 또한, 자바의 try-catch문은 조건도 상당히 간단하다.

public class Handler {
    public static void main(String[] args) {
        try {
            Thread.sleep(1000);
            System.out.println("스레드가 동작합니다.");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

 위와 같이 try 구문에는 정상 작동할 시 처리할 코드를, catch 구문에는 예외가 발생했을 때 처리할 코드를 작성해주면 된다. 해당 코드는 스레드를 1초에 한 번 씩 동작하는 코드고, InterruptedException 예외 클래스의 사용 조건은 스레드가 동작을 기다리는 메서드가 존재하는지 여부를 포함하고 있다. 여기서 Thread.sleep(1000); 코드가 존재하지 않는다면, 예외 처리 조건을 만족하지 못하여 컴파일 에러가 발생하게 된다.

 또한, try-catch문은 여러 예외를 처리할 수 있게 다중 catch문도 지원한다.

public class Handler {
    public static void main(String[] args) {
        try {
            int bunja = Integer.parseInt(args[0]);
            int bunmo = Integer.parseInt(args[1]);
            int result = bunja / bunmo;
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        } catch (ArithmeticException e) {
            e.printStackTrace();
        }
    }
}

 여러 종류의 예외가 발생할 것을 고려하여 catch문을 여러 개를 작성할 수 있고, 위의 예제 같은 경우에는 예외 발생 시, 같은 로직을 처리하기 때문에, catch문을 통합할 수 있다.

public class Handler {
    public static void main(String[] args) {
        try {
            int bunja = Integer.parseInt(args[0]);
            int bunmo = Integer.parseInt(args[1]);
            int result = bunja / bunmo;
        } catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
            e.printStackTrace();
        }
    }
}

여기까지 자바의 예외 처리 구문의 활용법에 대해서 알아봤다. 하지만 예외 처리의 진짜 매력적인 파트는 다음 파트부터 볼 수 있다. 지금까지는 가만히 컴퓨터가 주는 에러를 처리했지만, 필요하다면 우리가 직접 에러를 발생시킬 수도 있기 때문이다. 해당 내용 관련해서는 다음에 포스팅을 진행하겠다.

728x90