2017-05-07 7 views
0

서비스 레이어 사용자를 만들고 싶습니다.스프링 MVC : 선택적 vs 서비스 레이어의 예외

잘못된 ID를 처리하기위한 제안은 무엇입니까? 선택적으로 반환하거나 예외를 던지시겠습니까? 서비스 레이어는 HTML 뷰를 반환하는 프레젠테이션 레이어에 의해 호출됩니다.

프리젠 테이션 레이어에서 오류를 처리하는 것과 관련하여 어쩌면? (기본 오류 페이지, 로깅, ...)

옵션

public Optional<User> findOne(Long id) { 

     try { 
      User user = userRepository.findOne(id); 

      return Optional.ofNullable(user); 

     // something blow up in the Repository Layer 
     } catch (Exception ex) { 
      throw new ServiceException(ex); 
     } 
    } 

예외

public User findOne(Long id) { 

     try { 
      User user = userRepository.findOne(id); 

     // something blow up in the Repository Layer 
     } catch (Exception ex) { 
      throw new ServiceException(ex); 
     } 

     if (user == null) 
      throw new ServiceException("Invalid Id"); 

     return user; 
    } 

답변

1

나는이 프로그램에 비해 철학의 더 문제입니다 같아요.

예를 들어 사용자는 사용자 시스템에 로그인되어 있습니다.

사용자 정보 userService.getDetails(userId)을 얻으려고하면 예외를 throw해야합니다 (그에 대한 추가 데이터없이 사용 기록을 남길 수 없기 때문에). 이것은 오류입니다.

그러나 친구 인 userService.getFriends(userId)을 얻으려고하면 주어진 ID가있는 레코드가 없어도 괜찮습니다. 그래서 Optional은 좋은 응답입니다.

이런 식으로 생각합니다.

+0

흥미로운 점! – Dachstein