예외(Exception), 예외처리(try-catch)
예외 : 프로그램 실행 중 예상하지 못하는 상황
=> 예외 처리하지 않을 경우 프로그램 중단 발생
예외 종류
public class ExceptionPractice {
public void callCheckedException() throws Exception { // ✅ throws 예외를 상위로 전파
if (true) {
System.out.println("체크예외 발생");
throw new Exception();
}
}
}

Optional - null 다루는 방법
Optional은 값이 있을 수도 있고, 없을 수도 있는 상황(null)을 안전하게 다루기 위한 클래스이다.
기존에는 값이 없을 때 null을 사용했는데, 이 경우 값을 확인하지 않고 사용하면 NullPointerException이 발생할 수 있다.
Student student = null;
student.getName(); // 에러 발생
이러한 문제를 해결하기 위해 Optional을 사용한다.
Optional은 값을 바로 사용하는 것이 아니라,
“값이 있는지 확인하고 사용하도록 강제하는 상자”라고 생각하면 된다.
Optional name = Optional.of("홍기"); // 값 있음
Optional empty = Optional.empty(); // 값 없음
if (name.isPresent()) {
System.out.println("값이 있음");
}
String value = name.get(); // 값이 있을 때만 사용
※ 값이 없으면 에러 발생하므로 주의
String value = name.orElse("기본값");
→ 값이 있으면 사용, 없으면 "기본값" 사용
컬렉션(Collection)
제네릭(Generic)
람다(Lamda)
스트림(Stream)
쓰레드(Thread)