2017-05-07 2 views
0

私はサービスレイヤーを処理したいと思っています。Spring MVC:オプションとサービスレイヤーの例外対

無効な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)を取得しようとすると、例外がスローされるはずです(彼についての余分なデータなしでログに記録することはできないため)。これはエラーです。

しかし、友人userService.getFriends(userId)を取得しようとすると、指定されたIDを持つレコードがない場合は問題ありません。したがって、この場合、Optionalは良い応答です。

このように思います。

+0

注目点! – Dachstein

関連する問題