java 8 stream throw exception bubble up (예외사항 전파)

2019.05.07 16:18JAVA







스트림 사용시에 상위 메소드로 익셉션을 전파하고 싶을때 사용


try {
      customIds.forEach(customId ->{
        List<Ad> ads = null;
        try {
          ads = fbAdAPIService.findByAllAds(customId);
        } catch (Exception e) {
          log.error("페이스북 광고(소재) 데이터 수집 실패 = customerId = {}", customId );
          throw new RuntimeException(e);
    } catch (RuntimeException e) {
      // FIXME : Ad - throw bubble up
      if (e.getCause() != null) {
        throw e;




Returns the cause of this throwable or null if the cause is nonexistent or unknown. (The cause is the throwable that caused this throwable to get thrown.)
This implementation returns the cause that was supplied via one of the constructors requiring a Throwable, or that was set after creation with the initCause(Throwable) method. While it is typically unnecessary to override this method, a subclass can override it to return a cause set by some other means. This is appropriate for a "legacy chained throwable" that predates the addition of chained exceptions to Throwable. Note that it is not necessary to override any of the PrintStackTrace methods, all of which invoke the getCause method to determine the cause of a throwable.