본문 바로가기
728x90

자바15

Item 72. 표준 예외를 사용하라. 표준 예외를 재사용하는 것으로 얻을 수 있는 이점은 다음과 같다. 1. 표준 예외는 많은 프로그래머에게 익숙한 규약을 따른다. 따라서 내가 작성한 API를 다른 사람이 익히고 사용하기 쉬워진다. 2. 예외 클래스 수가 적으면 메모리 사용량이 줄고 클래스를 적재하는 시간도 적게 걸린다. 많이 사용되는 예외들은 다음과 같다. 예외 사용처 IllegalArgumentException 허용하지 않는 값이 인수로 건네졌을 때(null은 따로 NullPointerException 으로 처리) IllegalStateException 객체가 메서드를 수행하기에 적절하지 않은 상태일 때 NullPointerExcetpion null을 허용하지 않는 메서드에 null을 건넸을 때 IndexOutOfBoundsExcepti.. 2022. 4. 17.
Item 69. 예외는 진짜 예외 상황에만 사용하라 코드 부터 보자. 1 2 3 4 5 6 7 8 9 try { int i = 0; while (true) { range[i++].climb(); } } catch (ArrayIndexOutOfBoundsException e) { } Colored by Color Scripter cs 이 코드는 배열의 끝에 도달하면 에러를 던져 코드를 종료한다. for-each loop 를 사용하지 않고 이처럼 작성한 이유는 다음과 같다. JVM은 배열에 접근할 때마다 경계를 넘었는지를 검사한다. 반복문 또한 배결 경계에 도달하면 종료한다. 따라서 반복문을 사용하면 경계 검사가 중복되므로 하나를 생량한 것이다. 하지만 이는 다음과 같은 이유로 잘못된 추론이다. 1. 예외는 예외 상황에서만 사용할 목적으로 설계되었으므로 JV.. 2022. 4. 17.
12장. 새로운 날짜와 시간 API 자바 8 이전에도 날짜, 시간 관련 API가 존재했다. 자바 1.0에서는 java.util.Date 클래스로, java 1.1에서는 java.util.Calendar 클래스로 이 기능을 제공했다. 하지만 이들은 다음과 같은 문제를 가지고 있다. java.util.Date: 1900년을 기준으로 오프셋, 0에서 시작하는 달 인덱스, JVM 기본 시간대인 CET(Central European Time - 중앙 유럽 시간) 사용, 가변 등. 따라서 다음과 같이 괴상하게(?) 코드를 작성해야 한다. 1 Date date = new Date(117, 8, 21); // 2017년 9월 21일 cs java.util.Calendar: 1900년 부터 시작하는 오프셋은 없지만 여전히 달의 인덱스가 0 부터 시작했다,.. 2022. 3. 30.
11장. null 대신 Optional 클래스 값이 없는 상황을 어떻게 처릴할까? 1 2 3 public String getCarInsuranceName(Person person) { return person.getCar().getInsurance().getName(); } Colored by Color Scripter cs 위 코드의 경우 만약 getCar 메서드를 통해 가져온 객체가 null이거나 getInsurance의 반환값이 null이라면 NullPointerExceptino이 발생한다. 보수적인 자세로 NullPointerException 줄이기 위 코드와 같은 NullPointerException을 줄이기 위해선 다음과 같은 보수적 방식을 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 public String getC.. 2022. 3. 27.
728x90