代码之家  ›  专栏  ›  技术社区  ›  Chandresh Mishra

反应器BubblingException代替自定义异常

  •  0
  • Chandresh Mishra  · 技术社区  · 6 年前

    部分代码:

     return loginBOMonoValidated.map(this::checkAuth).map(login -> getUserContactsBOMono(login));
    
    private LoginBO checkAuth(LoginBO loginBO) {
    
        if (!loginBO.getClientId().equals(loginBO.getLoginId())) {
    
          LoginDTO loginDTO = new LoginDTO(loginBO.getLoginId(), loginBO.getClientId());
          authorizationRemoteClient
              .validateManagerClientAccess(Mono.just(loginDTO))
              .subscribe(authClientConsumer);
          return new LoginBO(loginBO.getClientId(), loginBO.getClientId());
        } 
          else return loginBO;
      }
    
    private Consumer<Boolean> authClientConsumer =
      bol -> {
        if (!bol) {
          logger.error(ErrorCodes.LOGIN_ID_VALIDATION_ERROR.getDescription());
    
          throw new AuthorizationException();
        }
      };
    

    Throwable exception =
            assertThrows(
                AuthorizationException.class,
                () -> {
                  Mono<UserContactsBO> contact =contactInfoService.getUserContacts(Mono.just(new LoginBO("123456789", "1234")));
                  contact.subscribe();
                });
    

    预期: . .*授权异常

    实际:reactor.core.Exceptions.BubblingException

    0 回复  |  直到 6 年前