`try`, `catch`, 그리고 예외(exception)에 관한 개념은 프로그래밍에서 예외 상황을 처리하고 프로그램의 안정성을 높이는 데 중요합니다. 아래에서 `try-catch` 블록과 예외의 종류에 대해 자세히 설명하겠습니다.
### try-catch 블록:
- try 블록: `try` 블록은 예외가 발생할 수 있는 코드를 포함합니다. 이 부분에서 예외가 발생하면 해당 예외를 처리하는 데 사용됩니다.
- catch 블록: `catch` 블록은 `try` 블록에서 발생한 예외를 처리합니다. 여러 `catch` 블록이 있을 수 있으며, 발생한 예외의 종류에 따라 적절한 `catch` 블록이 선택됩니다.
- finally 블록 (선택적): `finally` 블록은 예외 발생 여부에 관계없이 항상 실행되는 블록입니다. 주로 리소스 해제나 정리 작업을 위해 사용됩니다.
아래는 기본적인 `try-catch` 블록의 구조입니다:
try {
// 예외가 발생할 수 있는 코드
} catch (ExceptionType1 e1) {
// ExceptionType1에 대한 처리
} catch (ExceptionType2 e2) {
// ExceptionType2에 대한 처리
} finally {
// 항상 실행되는 코드 (선택적)
}
Java에서는 예외(exception)를 두 가지 주요 범주로 나눌 수 있습니다: Checked 예외와 Unchecked 예외. 각각의 예외 범주에는 여러 가지 예외 클래스들이 포함되어 있습니다.
Checked 예외 (Checked Exception):
Checked 예외는 컴파일러가 예외 처리를 강제하는 예외입니다. 다루지 않으면 컴파일 오류가 발생합니다.
- IOException:
- 파일 또는 네트워크와 관련된 입출력 작업에서 발생할 수 있는 예외를 다룹니다.
- SQLException:
- 데이터베이스 관련 작업에서 발생할 수 있는 예외를 다룹니다.
- ClassNotFoundException:
- 클래스를 찾을 수 없는 경우 발생하는 예외입니다.
- InterruptedException:
- Thread.sleep() 등의 메서드를 사용할 때, 스레드가 중단될 경우 발생하는 예외입니다.
- FileNotFoundException:
- 파일을 찾을 수 없는 경우 발생하는 예외입니다.
Unchecked 예외 (Unchecked Exception 또는 Runtime Exception):
Unchecked 예외는 컴파일러가 확인하지 않으며, 명시적인 예외 처리가 필수가 아닙니다. 프로그래머가 주의해야 하며, 발생 시 프로그램의 안정성이 영향을 받을 수 있습니다.
- NullPointerException:
- null 참조를 가지고 있는 변수를 엑세스할 때 발생하는 예외입니다.
- ArrayIndexOutOfBoundsException:
- 배열 인덱스가 배열의 범위를 벗어날 때 발생하는 예외입니다.
- ArithmeticException:
- 수학 연산 중에 예외적인 산술 조건이 발생했을 때 발생하는 예외입니다. (예: 0으로 나누기)
- ClassCastException:
- 객체를 부적절한 형으로 캐스팅하려고 할 때 발생하는 예외입니다.
- NumberFormatException:
- 문자열을 숫자로 변환하는 과정에서 유효하지 않은 숫자 형식의 문자열이 사용되었을 때 발생하는 예외입니다.
Error:
Error 클래스는 프로그램이 복구할 수 없는 심각한 상태에 도달했을 때 발생하는 예외입니다. 애플리케이션 코드에서 이러한 예외를 처리하기보다는 예외를 기록하고 종료하는 것이 일반적입니다.
- OutOfMemoryError:
- JVM이 힙 메모리를 추가로 할당할 수 없을 때 발생하는 예외입니다.
- StackOverflowError:
- 재귀 호출이 너무 깊어서 스택 공간이 부족한 경우 발생하는 예외입니다.
이것은 Java에서 일반적으로 발생하는 예외의 몇 가지 예시입니다. 개발자는 어떤 예외가 발생할 수 있는지 알아야 하고, 각 예외에 대한 적절한 예외 처리를 구현하여 프로그램의 안정성을 유지해야 합니다.
'게으른 개발자의 끄적거림' 카테고리의 다른 글
컴퓨터 전원은 켜지는데 다른 장치들이 안켜질때 (1) | 2024.01.08 |
---|---|
.java .class 파일 차이점 (1) | 2024.01.04 |
private static 쓰는 경우 (0) | 2024.01.03 |
Java static이란? static변수 설명 (0) | 2024.01.02 |
싱글톤 패턴(Singleton Pattern)이란? (0) | 2024.01.02 |