Exception

자바 8전에는 메서드가 특정 조건에서 값을 반환할 수 없을 때 취할 수 있는 선택지는 두가지가 존재했다. 예외를 던진다. null을 반환한다. 하지만 두가지 모두 허점이 존재하게 되는데, 예외는 진짜 예외적인 상황에서만 사용해야 하며, 예외를 생성할 때 스택 추적 전체를 캡처하므로 비용도 만만치 않다. null을 반환하면 이런 문제가 생기지는 않지만, 메서드를 호출 하는 쪽에서 별도의 null 처리 코드를 추가해야하는 문제가 발생한다. 자바가 8버전으로 올라가면서 또 하나의 선택지가 생겼는데 바로 Optional를 사용하는 것이다. Optional은 null이 아닌 T 타입 참조를 하나 담거나, 혹은 아무것도 담지 않을 수 있다. 보통 T를 반환해야 하지만 특정 조건에서는 아무것도 반환하지 않아야 할 때..
예외처리 방법1. 예외 복구 => 정상 상태로 돌려 놓는 것. 예외로 인해 기본 작업 흐름이 불가능하다면 다른 작업 흐름으로 자연스럽게 유도해주는 것ex) SQLException (네트워크가 불안해서 발생하는 문제라면)123456789101112int maxRetry = MAX_RETRY;while(maxEntry --> 0){ try{ .. return; // 작업 성공 }catch(SomeException e){ // 로그 출력 및 정해진 시간만큼 대기 }finally{ // 리소스 반납 }}throw new RetryFailedException(); // 최대 횟수를 넘기면 직접 예외 발생cs 2. 예외처리 회피예외처리를 담당하지 않고, 호출한 쪽으로 예외를 던져버리는 것.하지만 무책임한 회피는 금..
예외처리블랙홀 예외처리=> catch블록을 이용해 화면에 메시지를 출력한 것은 예외를 처리한 것이 아니다.예외를 처리할 때 반드시 지켜야 할 핵심 원칙은 한가지다.모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보돼야 한다.123456try{ // .. 로직}catch(SQLException e){ e.printStackTrace(); System.exit(1);}cs(그나마 나은 예외처리.. 시스템 종료) 무의미하고 무책임한 throws=> 기계적으로 throws를 던진다면, 결과적으로 적절한 처리를 통해 복구될 수 있는 예외상황도 제대로 다룰 수 있는 기회를 박탈 당한다. 예외의 종류와 특징예외처리에서 가장큰 이슈는 checked Exception(명시적 처..
깡냉쓰
'Exception' 태그의 글 목록