목차
[TIL] Day 14 — Java 예외처리 + 제네릭 + 컬렉션
날짜: 2025-11-06
기술 스택: Java 예외처리 Generics Collections
부트캠프: 풀스택 개발자 부트캠프 3주차
예외처리 (Exception Handling)
try {
int result = 10 / 0; // ArithmeticException
} catch (ArithmeticException e) {
System.err.println("0으로 나눌 수 없음: " + e.getMessage());
} catch (Exception e) {
e.printStackTrace(); // 스택 트레이스 전체 출력
} finally {
System.out.println("항상 실행");
}
| 에러 종류 | 설명 |
|---|---|
| 컴파일 에러 | 실행 전 발생 |
| 런타임 에러 | 실행 중 발생 (NullPointerException 등) |
| 논리적 에러 | 실행은 되지만 의도와 다르게 동작 |
주요 예외 클래스
| 예외 | 발생 상황 |
|---|---|
NullPointerException |
null 객체 접근 |
ArithmeticException |
0으로 나누기 |
ArrayIndexOutOfBoundsException |
배열 범위 초과 |
ClassCastException |
잘못된 형변환 |
throws 위임
public void readFile(String path) throws IOException {
FileReader reader = new FileReader(path);
// 호출한 쪽에서 예외 처리
}
제네릭 (Generics)
class Box<T> { // T: 타입 매개변수
T item;
void setItem(T item) { this.item = item; }
T getItem() { return item; }
}
Box<String> strBox = new Box<>();
strBox.setItem("hello");
String s = strBox.getItem(); // 캐스팅 불필요
Box<Integer> intBox = new Box<>();
intBox.setItem(42);
- 컴파일 시점에 타입 체크 → 런타임
ClassCastException방지 - 타입 매개변수 관례:
<T>Type,<E>Element,<K>Key,<V>Value
Collections Framework
| 인터페이스 | 주요 클래스 | 특징 |
|---|---|---|
List |
ArrayList, LinkedList |
순서 유지, 중복 허용 |
Set |
HashSet, TreeSet |
중복 불허 |
Map |
HashMap, TreeMap |
키-값 쌍 |
// ArrayList
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Spring");
System.out.println(list.get(0)); // Java
list.remove(0);
System.out.println(list.size()); // 1
// HashMap
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
System.out.println(map.get("a")); // 1
map.remove("b");
// HashSet
Set<Integer> set = new HashSet<>();
set.add(1); set.add(1); set.add(2);
System.out.println(set.size()); // 2 — 중복 제거
트러블슈팅
catch 순서
- 자식 예외를 먼저, 부모를 나중에.
Exception이 먼저면 모든 예외를 잡아서 이후 catch 블록 실행 안 됨
ArrayList vs Array 선택
- 크기 고정이면 배열, 동적 크기 필요하면
ArrayList
더 알아볼 것
- Checked vs Unchecked Exception 실무 활용 기준
-
try-with-resources문법 (Java 7+) -
HashMap내부 해시 코드 연산 원리 -
TreeMap/TreeSet정렬 기준 (ComparablevsComparator) - 제네릭 와일드카드 (
<?>,<? extends T>,<? super T>)
'⏳ Time Log > 1. One Day (Daily · TIL)' 카테고리의 다른 글
| [TIL] Day 16 — JavaScript 기초 + JSP 최초 시작 (0) | 2026.02.19 |
|---|---|
| [TIL] Day 15 — Java Collections(Stack/Queue) + 현직 특강 메모👨🏫 (0) | 2026.02.19 |
| [TIL] Day 13 — JVM 메모리 구조 + Java OOP 실습 (0) | 2026.02.19 |
| [TIL] Day 12 — Java 다형성 + 추상클래스 + 인터페이스 (0) | 2026.02.19 |