
시스템을 안정적이고 유지시킵니다.
What ?
Exception
💡 프로그램 실행 중 에러나 예외가 발생했을 때, 이를 처리하기 위해 사용하는 기능입니다.
💡 프로그램의 흐름을 유지해 프로그램 안정성을 향상시킵니다.
💡 문제가 발생한 위치와 이유를 쉽게 파악합니다.
💡 코드의 오류 처리 구조가 명확해져 유지보수가 원활해집니다.
예외 ? 에러 ?
💡 예외
- 프로그램 실행 중 발생하는 예기치 못한 상황 입니다.
- 애플리케이션 수준에서 발생하며, 개발자가 처리해야 하는 문제입니다.
ex ) Checked Exceiption( 컴파일 시 반드시 처리 ),
Unchecked Exception( 런타임 시 발생 )
💡 에러
- 시스템 수준에서 발생하며, 복구가 불가능한 심각한 문제 입니다.
- 시스템 수준에서 발생하며, 일반적으로 개발자가 처리하지 않아서 발생합니다.
ex ) 메모리 부족 (OutOfMemoryError ),
스택 오버플로 ( StackOverflowError )
How ?
Exception
| 키워드 | 설명 | 예시 |
| try-catch | 예외가 발생할 코드 : try 예외처리를 할 코드 : catch |
try { int result = 10 / 0; } catch (ArithmeticException e) { System.out.println("예외 처리: " + e.getMessage()) } |
| finally | 예외와 관계없이 항상 실행 자원 해제(close)에 사용 |
try { int result = 10 / 2; } catch (ArithmeticException e) { System.out.println("예외 처리: " + e.getMessage()); } finally { System.out.println("항상 실행됩니다."); } |
| throw | 명시적인 예외 발생시 사용 | public void checkAge(int age) { if (age < 18) { throw new IllegalArgumentException("18세 이상만"); } } |
| throws | 메서드 선언부에 사용 예외 가능성을 알림 |
public void readFile(String filePath) throws IOException { FileReader reader = new FileReader(filePath); } |
사용자 정의 예외
💡 기본 제공되는 예외 외에 사용자가 정의한 예외를 만들 수 있습니다.
// 사용자 정의 예외 예시 class InvalidAgeException extends Exception { public InvalidAgeException(String message) { super(message); } }
주의 사항
💡 과도한 예외 처리 코드 가독성을 떨어뜨림.
💡 모든 예외를 포괄하는 "catch(Exception e)" 은 문제를 감출 수 있으므로 주의
💡 필요 이상의 사용자 정의 예외는 코드 복잡성을 증가시킴.