예외는 프로그램 실행 중에 발생하는 정상적이지 않은 상황을 가리킨다. 예를 들어, 0으로 나누기, 배열의 인덱스 초과, 없는 파일을 열려고 시도하는 등의 경우가 예외 상황에 해당한다.
int result = 1 / 0; // ArithmeticException 예외 발생
예외 처리는 프로그램이 예외 상황을 감지하고 그에 따른 적절한 조치를 취하는 과정을 의미한다. Java에서는 try-catch 문을 사용하여 예외를 처리한다.
int a = 0;
try {
int result = 5 / a; // ArithmeticException 예외 발생 가능성
} catch (ArithmeticException e) {
// ArithmeticException이 발생했을 때 실행되는 부분
System.out.println("0으로 나눌 수 없습니다.");
System.out.println("에러 메시지: " + e.getMessage());
}
위 예시에서는 try 블록 내에서 5 / a 연산을 시도하고 있다. 이 연산은 a가 0일 때 ArithmeticException 예외가 발생할 수 있다. catch 블록에서는 ArithmeticException 예외가 발생했을 때 실행될 코드를 정의한다.
예외 처리는 프로그램의 안정성을 높이고 예상치 못한 오류로부터 프로그램을 보호하는 데 중요한 역할을 한다. 프로그램이 예외 상황에 대비하지 않으면 예외가 발생할 경우 프로그램이 비정상적으로 종료될 수 있다. 따라서 예외 처리는 프로그래머에게 프로그램의 안정성을 유지하는 데 큰 도움을 준다.
try-catch 블록은 예외가 발생할 수 있는 코드를 try 블록 안에 작성하고, 해당 예외를 처리하기 위한 코드를 catch 블록에 작성하는데 사용된다. 이를 통해 프로그램은 예외 상황을 감지하고 그에 따른 적절한 조치를 취할 수 있다. 따라서 예외가 발생하더라도 프로그램이 비정상적으로 종료되는 것을 방지할 수 있다.
finally 블록은 예외의 발생 여부와 관계없이 항상 실행되는 부분이다. 주로 리소스 해제나 정리 작업 등을 수행한다.
try {
// 예외가 발생할 수도 있는 부분
} catch (예외 case 1) {
// 예외 case 1이 발생했을 때 실행되는 부분
} finally {
// 항상 실행되는 부분
// 리소스 해제나 정리 작업 등을 수행
}
finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 부분이다. 이를 활용하여 파일이나 네트워크 연결 등의 리소스를 해제하거나 정리 작업을 수행할 수 있다. 이는 메모리 누수와 같은 문제를 방지하고 프로그램의 안정성을 높이는 데 도움이 된다.
void someMethod() {
throw new Exception("예외 발생");
}
void anotherMethod() throws Exception {
// 메소드에서 발생할 수 있는 예외를 선언
}
throw 키워드는 예외를 강제로 발생시키는 데 사용된다. 프로그래머는 예외 상황을 감지하고 특정한 조건에 따라 예외를 발생시킬 수 있다. throws 키워드는 메소드에서 발생할 수 있는 예외를 선언하는데 사용된다. 이를 통해 해당 메소드를 호출하는 쪽에서 예외 처리를 수행할 수 있도록 한다.