게으른 개발자의 끄적거림

Java Exception 완벽 정리

끄적잉 2024. 4. 24. 22:14
반응형

Java Exception 완벽 정리

 

자바에서 예외(Exception)는 프로그램 실행 중 발생할 수 있는 오류를 나타냅니다. 예외는 예상치 못한 상황이나 프로그램이 처리할 수 없는 조건을 나타내며, 예외가 발생하면 프로그램의 흐름이 중단되고, 예외를 처리할 코드 블록이 호출됩니다. 자바에서 예외는 Throwable 클래스의 하위 클래스인 Exception 클래스에서 파생됩니다. 

자바에서는 다음 두 가지 유형의 예외가 있습니다: **컴파일 시간 예외(checked exceptions)**과 **런타임 예외(unchecked exceptions)**.

 


1. **컴파일 시간 예외(checked exceptions):**
   - 컴파일 시간 예외는 Exception 클래스의 하위 클래스 중 RuntimeException 클래스를 상속하지 않는 예외입니다.
   - 이러한 예외는 컴파일러에 의해 강제되는 예외로, 예외 처리 코드가 반드시 필요합니다. 예외를 처리하지 않으면 컴파일 오류가 발생합니다.
   - 대표적인 예로는 IOException, FileNotFoundException 등이 있습니다.
   - 컴파일 시간 예외를 처리하기 위해 try-catch 블록이나 throws 키워드를 사용하여 예외를 호출하는 코드로 전파할 수 있습니다.

 


2. **런타임 예외(unchecked exceptions):**
   - 런타임 예외는 Exception 클래스의 하위 클래스 중 RuntimeException 클래스를 상속하는 예외입니다.
   - 이러한 예외는 컴파일러에 의해 강제되지 않습니다. 따라서 개발자가 직접 예외 처리를 해도 되고 안 해도 됩니다.
   - 대표적인 예로는 NullPointerException, ArrayIndexOutOfBoundsException 등이 있습니다.
   - 런타임 예외는 일반적으로 프로그래밍 오류로 인해 발생하며, 예외를 처리하는 것보다는 예외가 발생하지 않도록 코드를 수정하는 것이 바람직합니다.

 

반응형


여기에 몇 가지 주요한 자바 예외 종류를 소개하겠습니다:

1. **IOException 및 그 하위 예외들:**
   - IOException은 입출력 작업 중 발생할 수 있는 예외입니다. 파일을 읽고 쓸 때 발생할 수 있습니다.
   - FileNotFoundException은 파일을 찾을 수 없을 때 발생합니다.
   - EOFException은 파일의 끝에 도달했을 때 발생합니다.

2. **NullPointerException:**
   - 객체가 없는 상태에서 메서드를 호출하거나 속성에 접근하려고 할 때 발생합니다. 객체 참조가 null일 때 발생합니다.

3. **ArrayIndexOutOfBoundsException:**
   - 배열의 유효하지 않은 인덱스에 접근하려고 할 때 발생합니다. 배열의 범위를 벗어나는 인덱스로 배열 요소에 접근하려고 할 때 발생합니다.

4. **NumberFormatException:**
   - 숫자 형식의 문자열을 숫자로 변환할 때, 유효하지 않은 숫자 형식의 문자열을 변환하려고 할 때 발생합니다.

5. **ClassNotFoundException:**
   - 클래스를 찾을 수 없을 때 발생합니다. 클래스 이름을 잘못 지정하거나 클래스 경로가 올바르지 않을 때 발생할 수 있습니다.

6. **ArithmeticException:**
   - 수학적 연산에서 발생할 수 있는 예외입니다. 0으로 나누려고 할 때 발생합니다.

7. **InterruptedException:**
   - 스레드가 sleep(), wait() 또는 join() 메서드에서 대기 중이거나 차단되어 있는 동안 다른 스레드가 해당 스레드를 중단하려고 할 때 발생합니다.

8. **SQLException:**
   - 데이터베이스와 관련된 작업 중에 발생하는 예외입니다. 데이터베이스 연결 문제, 쿼리 실행 오류 등이 포함됩니다.

9. **ClassCastException:**
   - 객체를 잘못된 형식으로 캐스팅하려고 할 때 발생합니다. 객체의 실제 유형과 캐스트하려는 유형이 서로 호환되지 않을 때 발생합니다.

10. **ConcurrentModificationException:**
    - 한 스레드가 컬렉션을 수정하는 동안 다른 스레드가 동시에 같은 컬렉션을 수정하려고 할 때 발생합니다.

11. **IllegalStateException:**
    - 객체의 상태가 메서드 호출에 적합하지 않을 때 발생합니다. 예를 들어, 객체가 닫힌 상태에서 추가적인 작업을 수행하려고 할 때 발생합니다.

12. **SecurityException:**
    - 보안 관련 작업을 수행할 때 보안 제한으로 인해 예외가 발생할 때 사용됩니다.

13. **OutOfMemoryError:**
    - JVM이 힙 메모리를 할당할 수 없을 때 발생합니다. 대규모 객체 생성이나 재귀 호출 등으로 인해 메모리가 부족할 때 발생할 수 있습니다.

14. **StackOverflowError:**
    - 스택 메모리가 꽉 찼을 때 발생합니다. 메서드 호출이 너무 깊게 중첩되어 스택이 오버플로될 때 발생합니다.

이것은 자바의 주요 예외들 중 일부에 대한 간략한 소개일 뿐입니다. 예외는 프로그래밍에서 자주 발생하는 중요한 주제이며, 프로그래머는 예외를 처리하는 방법을 익

반응형

'게으른 개발자의 끄적거림' 카테고리의 다른 글

JPA란? 기본 CRUD 예제  (0) 2024.04.29
jQuery $.function 이란?  (0) 2024.04.25
jsp에서 vo받는 방법  (0) 2024.04.23
URL 디코딩 인코딩(decoding incoding)  (0) 2024.04.22
SSH란? (putty, xshell 등등)  (0) 2024.04.18