본문 바로가기
쿤즈 Dev/Java

[Java] 예외 처리 Exception

by :)Koon 2023. 9. 24.

자바(Java)에서 프로그래밍을 진행하다 보면 예외처리는 선택이 아니라 필수 요소가 된다. 그렇다면 예외 처리란 무엇이고 어떻게 사용할까.

이번 포스팅에서는 자바에서 사용하는 예외 처리에 대해서 알아보자.


예외 처리 Exception

예외란 프로그램 실행중에 발생할 수 있는 오류나 예상치 못한 상황을 처리하기 위한 메커니즘이다. 자바에서 예외는 다양한 유형과 계층 구조를 가지고 있다. 예외를 처리하기 위한 문법은 try-catch 블록을 사용한다. 자바는 크게 아래와 같은 유형으로 예외가 발생한다.


검사 예외 Checked Exception

컴파일러가 예외 처리를 강제한다. 반드시 예외를 처리해야 하거나 throws 예약어를 사용해 예외를 상위 메서드로 전파해야 한다.

예) 'IOException', 'SQLException', ...

 

비검사 예외 또는 런타임 예외 Unchecked Exception

명시적으로 예외 처리가 필요하지 않다. 그래서 예외 처리를 하지 않아도 컴파일러 오류는 발생하지 않는다.

예) 'NullPointerException', 'ArithmeticException', ...

 

Error

프로그램이 복구할 수 없는 치명적인 오류를 나타낸다. 일반적으로 시스템 레벨에서 발생하며, 개발자가 직접 처리하지 않아도 된다.

예) 'OutOfMemoryError', 'StackOverflowError', ...


예외 처리는 try-catch 블록을 사용해서 만들 수 있다. 예외가 발생하는 코드를 try 블록에 넣고, 해당 예외를 처리하거나 더 높은 계층으로 던질 수 있다. 이때 예외를 던지는 부분은 catch 블록을 사용한다. 아래는 예외 처리를 하는 간단한 예제이다.

try {
    // 예외가 발생할 수 있는 코드
    int result = 10 / 0; // ArithmeticException 발생
} catch (ArithmeticException e) {
    // 예외 처리
    System.out.println("0으로 나눌 수 없음.");
} finally {
    // 예외 발생 여부와 상관없이 항상 실행되는 블록
    System.out.println("예외 처리 완료");
}

현실에서도 0으로 나눌 수 없듯 프로그래밍에서도 0으로 나누면 에러가 발생한다. 이때 발생되는 에러는 수학 연산에 관련된 에러이므로 'ArithmeticException'이 발생한다. 이렇게 발생된 예외를 catch 블록에서 처리하고 필요하다면 'finally'에서 마지막에 무언가를 처리할 수 있다. 'finally' 블록은 무조건 실행되는 블록이다.


이번 포스팅에서는 자바의 예외처리에 대해서 알아보았다. 항상 예외는 발생할 수 있다는 생각을 염두해 두고 필요하다면 예외처리를 통해서 조금 더 안전하게 프로그램을 만들어야 한다.

댓글