예외처리는 프로그램 실행 중에 발생할 수 있는 예외적인 상황을 처리하는 메커니즘입니다. Java에서는 예외를 사용하여 이러한 상황을 처리할 수 있으며, 예외는 프로그램의 정상적인 흐름을 방해하지 않도록 해줍니다.
예외처리의 주요 개념과 방법을 이해하기 위해 다음 내용을 살펴보겠습니다:
Java에서 예외는 크게 두 가지로 나눌 수 있습니다:
체크 예외 (Checked Exception):
throws
)해야 합니다.IOException
, SQLException
언체크 예외 (Unchecked Exception):
NullPointerException
, ArrayIndexOutOfBoundsException
예외를 처리하는 방법은 크게 두 가지입니다:
예외를 잡아서 처리 (catch):
try
블록으로 감싸고, catch
블록에서 예외를 처리합니다.catch
블록이 실행되어 예외 처리 로직을 수행합니다.예외를 던지기 (throw):
throws
키워드를 사용하여 던질 수 있는 예외를 명시합니다.먼저, 사용자 정의 예외 클래스 MyCheckedException
을 정의합니다:
package exception.basic.checked;
public class MyCheckedException extends Exception {
public MyCheckedException(String message) {
super(message);
}
}
다음으로, 예외를 던지는 Client
클래스를 정의합니다:
package exception.basic.checked;
public class Client {
public void call() throws MyCheckedException {
// 예외를 강제로 발생시킴
throw new MyCheckedException("예외 발생!");
}
}
이제 예외를 처리하는 Service
클래스를 봅니다:
package exception.basic.checked;
public class Service {
Client client = new Client();
/**
* 예외를 잡아서 처리하는 코드
*/
public void callCatch() {
try {
client.call();
} catch (MyCheckedException e) {
// 예외 처리 로직
System.out.println("예외 처리, message=" + e.getMessage());
}
System.out.println("정상 흐름");
}
/**
* 체크 예외를 밖으로 던지는 코드
* 체크 예외는 예외를 잡지 않고 밖으로 던지려면 throws 예외를 메서드에 필수로 선언해야 한다.
*/
public void callThrow() throws MyCheckedException {
client.call();
}
}
callCatch
메서드:
try
블록 안에서 client.call()
을 호출합니다.client.call()
메서드는 MyCheckedException
을 던질 수 있습니다.catch
블록에서 예외를 처리하고, 예외 메시지를 출력합니다.callThrow
메서드:
client.call()
을 호출하지만 예외를 잡지 않고 호출자에게 던집니다.throws MyCheckedException
을 추가하여 예외를 던질 수 있음을 명시합니다.try-catch
블록을 사용하여 예외를 잡아 처리하거나, throws
키워드를 사용하여 예외를 호출자에게 전달하는 방식으로 처리할 수 있습니다.위 예제를 통해 기본적인 예외 처리의 개념과 방법을 이해할 수 있습니다. 예외 처리는 코드의 신뢰성을 높이는 중요한 기술이므로, 이를 잘 이해하고 적용하는 것이 중요합니다.