본문 바로가기

Languages/Java

예외처리

예외처리

Java에서 모든 에러와 예외는 Throwable 클래스의 하위 클래스입니다. Throwable 클래스는 Java에서 발생할 수 있는 모든 유형의 문제를 나타내며, 이는 두 개의 주요 하위 클래스인 Error 클래스와 Exception 클래스를 가지고 있습니다. 이를 이해하면 Java에서의 예외 처리 체계를 더욱 잘 이해하고 활용할 수 있습니다.

Error vs Exception

Error

에러는 시스템 레벨에서 발생하는 심각한 문제를 나타냅니다. 대부분 JVM(Java Virtual Machine) 자체에서 발생하거나, 시스템 자원 부족 등과 같은 경우에 발생합니다. 에러의 예로는 OutOfMemoryError(메모리 부족), StackOverflowError(스택 오버플로우) 등이 있습니다. 이러한 문제들은 일반적으로 개발자가 처리할 수 없는 큰 문제들입니다.

Exception

예외는 프로그램 코드 실행 중에 발생할 수 있는 문제를 나타냅니다. 이러한 문제는 코드에서 예외 처리를 통해 처리할 수 있습니다. 예외는 체크된 예외와 체크되지 않은 예외로 분류될 수 있습니다.

Checked Exception vs Unchecked Exception

Checked Exception

체크된 예외는 컴파일러가 예외 처리 코드를 강제로 필요로 하는 예외들입니다. 즉, 체크된 예외가 발생할 가능성이 있는 메서드에서는 해당 예외를 선언하거나(throws), try-catch 블록으로 처리해야 합니다. 이는 복구가 가능한 상황에서 발생하는 예외로, IOException, SQLException 등이 이에 해당합니다.

체크된 예외를 처리하지 않는다면?

체크된 예외를 발생시키는 메서드를 사용하면, 이를 처리하지 않으면 컴파일 오류가 발생합니다. 이를 해결하기 위해선 try-catch 블록을 사용하거나 throws 키워드를 사용해 예외를 호출한 메서드로 전달해야 합니다.

Unchecked Exception

체크되지 않은 예외는 컴파일러가 강제로 예외 처리 코드를 요구하지 않는 예외들입니다. 이는 주로 개발자의 프로그래밍 오류로 인해 발생하는 예외로, 런타임 시에만 발생합니다. NullPointerExeception, ArrayIndexOutOfBoundsException, IllegalArgumentException 등이 이에 해당합니다. 이러한 예외들은 일반적으로 프로그램의 버그를 나타내며, 프로그램 코드를 수정함으로써 고칠 수 있습니다.

'Languages > Java' 카테고리의 다른 글

리플렉션의 InvocationTargetException  (0) 2023.11.08
WeakHashMap과 약한 참조  (0) 2023.08.31
Primitive Type, Reference Type  (0) 2023.04.25
JVM과 GC  (0) 2023.04.12
[Java] HashMap, HashTable, HashSet  (0) 2023.04.12