
프로그램 실행 중에 발생하는 예상치 못한 문제로 크게 Checked Exception, Unchecked Exception(Runtime Exception), Error로 나뉜다.
1. Checked Exception
IOException, SQLException과 같은 입출력이나 데이터베이스와 관련된 예외가 있다. 2. Unchecked Exception (Runtime Exception)
ArrayIndexOutOfBoundsException, 0으로 나누기ArithmeticException 등이 있다.3. Error
OutOfMemoryError나 StackOverflowError가 있고, Error는 프로그램이 복구할 수 없는 심각한 문제를 나타내며, 일반적으로 예외 처리가 불가능1. 프로그램의 안정성 보장
예외 처리를 통해 프로그램은 예상치 못한 문제에 대응할 수 있으며 이로써 예측 가능한 동작을 유지하고, 비정상 종료나 데이터 손실을 방지할 수 있다.
2. 가독성 및 유지보수성 향상
명확한 예외 처리 코드를 작성하면 코드의 가독성이 향상되고, 다른 개발자가 이를 이해하고 유지보수하기 쉬워집니다.
3. 로깅과 모니터링을 통한 문제 파악
예외 처리는 로깅과 모니터링 시스템과 연계하여 시스템의 문제를 빠르게 감지하고 해결하는 데 도움을 준다.
4. 예외의 타고 올라가는 특성
예외는 호출 스택을 타고 올라가면서 상위 호출자에게 예외를 전파하고, 예외 처리를 통해 여러 단계에서 문제를 해결할 수 있다.
public class Test {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println("결과: " + result);
// ArithmeticException 에러로 실행되지 않음
} catch (ArithmeticException e) { //에러처리
System.out.println("0으로 나눌 수 없습니다.");
e.printStackTrace(); //예외 정보 출력 메서드
}
}
public static int divide(int a, int b) { //나누기 메서드
return a / b;
}
}
💻 출력 결과
0으로 나눌 수 없습니다.
java.lang.ArithmeticException
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FinallyExample {
public static void main(String[] args) {
BufferedReader br = null;
try {
//example.txt 파일 읽어오기
br = new BufferedReader(new FileReader("example.txt"));
String line;
//파일에서 한줄씩 읽어와서 출력
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) { //예외 처리
e.printStackTrace();
} finally {
closeReader(br); // 파일 닫기 메서드 호출
}
}
private static void closeReader(BufferedReader br) {
try { //읽어온 파일이 null이면 close
if (br != null)
br.close();
} catch (IOException e) { //예외처리
e.printStackTrace();
}
}
}
throws 메서드에서 발생할 수 있는 예외를 선언하는 데 사용import java.io.IOException;
public class ThrowsExample {
public static void main(String[] args) {
try {
readFile("example.txt");
} catch (IOException e) {
System.out.println("파일을 읽는 중 오류 발생: " + e.getMessage());
}
}
public static void readFile(String fileName) throws IOException {
// 파일을 읽는 코드가 있고, 오류가 발생시 throw 실행.
throw new IOException("파일을 읽던 중 오류 발생");
}
}