[Effective Java] 7. finalize 를 사용하지 말것
C++의 경우 생성자와 소멸자를 쌍으로 만들지만 자바의 경우는 GC가 불필요한 메모리를 정리하기 때문에 소멸자가 필요하지 않다. 자바에서 소멸자인 finalize는 절대로 사용하면 안된다. 1. finalize의 단점 자바의 finalize의 경우 예측이 불가능하고, 위험하며 ...
C++의 경우 생성자와 소멸자를 쌍으로 만들지만 자바의 경우는 GC가 불필요한 메모리를 정리하기 때문에 소멸자가 필요하지 않다. 자바에서 소멸자인 finalize는 절대로 사용하면 안된다. 1. finalize의 단점 자바의 finalize의 경우 예측이 불가능하고, 위험하며 ...
당연한 얘기지만 checked exception은 개발자에게 명시적으로 처리할 예외가 있다는 것을 알리는 것이다. 그렇기 때문에 무시하는 것은 좋지 못하다. 빈 catch문은 예외를 사용하는 목적에 맞지 않게 무시하는 것이다. 처리할 별다른 내용이 없다면 적어도 주석이라도 달아두...
일반적으로 메서드 호출이 정상적으로 처리되지 못하고 예외가 발생한 경우 객체의 상태는 메서드 호출 이전과 동일해야 한다. 이를 만족할때 실패원자성(failure atomicity)을 갖췄다고 한다. 1. failure atomicity를 달성 방법
Unchecked Exception으로 프로그램이 죽으면 자동으로 해당 Exception의 stact-trace를 출력한다. 이 정보는 해당 Exception의 toString 메서드가 예외 정보를 문자열로 변환한 결과이다.
api 문서에는 예외에 대한 내용도 명시되어 있어야 한다. 문서에 남길때는 @throws 태그를 이용한다.
메서드가 하는 일과 뚜렷한 관련이 없는 예외가 발생하면 혼동스럽다. 추상화 수준이 낮은 곳에서 발생한 예외를 그대로 전달해버리면 이와 같은 일이 생긴다.
자바 플랫폼 library에는 대부분 api가 필요로 하는 Runtime Exception이 갖춰져 있다. 수준 높은 코드는 코드 재사용성이 높다. Exception역시 마찬가지다. 참고로 Exception을 재사용 할때는 예외를 발생시키는 조건이 문서에 기술된 것과 일치해야...
GC가 있는 Java의 경우 메모리 관리를 망각하는 경우가 많다. 하지만 실수에 의해 불필요한 참조가 제거되지 않아 Memory leak이 발생할 수 있다.
Checked Exception을 사용하면 예외처리를 강제함으로써 프로그램의 안전성을 높일 수 있다. (try-catch 문 사용이 필수적이기 때문에) 하지만 너무 남발하면 사용하는 측에서 불편한 api가 된다. 만약 API를 제대로 사용해도 예외적인 상황이 발생하는 것을 피...
자바는 크게 Checked Exception과 Unchecked Exception으로 나뉜다. 그리고 Unchecked Exception은 Runtime Exception과 Error로 나뉜다. Checked Exception Runtime Exception Erro...