메서드가 특정 조건에서 값을 반환할 수 없을 때 예외를 던지거나, null을 반환합니다. 예외는 진짜 예외적인 상황에서만 사용해야하며 예외를 생성할 때 스택 추적 전체를 캡처하므로 비용도 상당합니다. null을 반환하면 메서드를 호출할 때 마다 null처리는 해야하며 그렇지 않으면 언젠가는 NullPointerException이 발생할 수 있습니다. Optional 자바 8에서는 하나의 선택지가 더 생겼습니다. Optional는 null이 아닌 T가 있거나 없을 수 있습니다. Optional은 원소를 최대 1개 가질 수 있는 불변컬렉션입니다. (실제로는 Collection를 구현하지는 않았습니다.) public static E max(Collection c) { if (c.isEmpty()) throw ..