728x90
반응형

exception 4

[Effective Java] 아이템 77. 예외를 무시하지 말라.

// catch 블록을 비워두면 예외가 무시된다. 아주 의심스러운 코드다! try{ ... } catch (SomeException e){ } 예외는 문제 상황에 잘 대처하기 위해 존재하는데 catch 블록을 비워두면 예외가 존재할 이유가 없어진다. 물론 예외를 무시해야 할 때도 있다. 예를 들어 FileInputStream을 닫을 때가 그렇다. 파일의 상태를 변경하지 않았으니 복구 할 것이 없으며, 필요한 정보는 이미 다 읽었다는 뜻이니 남은 작업을 중단할 이유도 없다. 어쨌든 예외를 무시하고 했다면 catch 블록 안에 그렇게 결정한 이유를 주석으로 남기고 예외 변수의 이름도 ignored로 바꿔놓도록 하자. 참고 자료 Joshua Bloch, 『Effective Java 3/E』, 개앞맵시 옮김, ..

Java 2023.04.12

[Effective Java] 아이템 75. 예외의 상세 메시지에 실패 관련 정보를 담으라.

🎯 아이템 75. 예외의 상세 메시지에 실패 관련 정보를 담으라. @Override public Object invoke(Object target, Object... parameters) { try { return ( (Method) getMember() ).invoke( target, parameters ); } catch (NullPointerException e) { throw new IllegalArgumentException( "Invoking " + getName() + " on a null object", e ); } catch (IllegalArgumentException e) { throw new IllegalArgumentException( "Invoking " + getName() +..

Java 2023.04.05

[Effective Java] 아이템 74. 메서드가 던지는 모든 예외를 문서화하라.

🎯 아이템 74. 메서드가 던지는 모든 예외를 문서화하라. 메서드가 던지는 예외는 그 메서드를 올바로 사용하는 데 아주 중요한 정보다. 따라서 각 메서드가 던지는 예외 하나하나를 문서화하는 데 충분한 시간을 쏟아야 한다. 검사 예외는 항상 따로따로 선언하고, 각 예외가 발생하는 상황을 자바독의 @throws 태그를 사용하여 정확히 문서화하자. /** * ... 생략 * * @throws SecurityException if a security manager exists and its * checkPermission method denies enabling * subclassing. * @throws IOException if an I/O error occurs while creating this stre..

Java 2023.04.04

[Effective Java] 아이템 72. 표준 예외를 사용하라.

숙련된 프로그래머는 그렇지 못한 프로그래머보다 더 많은 코드를 재사용한다. 예외도 마찬가지로 재사용하는 것이 좋으며, 자바 라이브러리는 대부분 API에서 쓰기에 충분한 수의 예외를 제공한다. 하지만 어떤 예외를 사용해야할지 모른다고하여 Exception, RuntimeException, Throwable, Error는 직접 재사용하지는 말자. 예외 주요 쓰임 IllegalArgumentException 허용하지 않는 값이 인수로 건네졌을 때 IllegalStateException 객체가 메서드를 수행하기에 적절하지 않은 상태일 때 NullPointerException null을 허용하지 않는 메서드에 null을 건넸을 때 IndexOutOfBoundsException 인덱스가 범위를 넘어섰을 때 Conc..

Java 2023.04.03
728x90
반응형