2016-11-23 57 views
-1

在我的代碼中,我有try/catch塊,在那裏我捕捉到mysql異常。然而,它仍抱怨我們需要在foreach循環中再次處理這個異常。在try塊內添加lambda時出現問題 - Java 8

正如你在這裏看到的正常for循環(在foreach邏輯之後),我們不需要專門處理它。有人能向我解釋這背後的邏輯嗎?

try (Connection connection = DAOUtil.getConnection(); 
    PreparedStatement statement = connection.prepareStatement(query)) { 

    IntStream.range(0, statuses.size()) 
     .forEach(i -> statement.setString(i+1 , statuses.get(i))); 
    for (int i = 0; i < statuses.size(); ++i) { 
     statement.setString(i + 1, statuses.get(i)); 
    } 

    return constructAPISummaryList(statement); 
    } catch (SQLException e) { 
     throw new APIMgtDAOException(e); 
    } 
} 

錯誤發生在.forEach(i -> statement.setString(i+1, statuses.get(i)));

錯誤消息: 「未處理的異常:java.sql.SQLException中的」

+0

請不要將圖片作爲代碼發佈,[請參閱此meta文章](https://meta.stackoverflow.com/q/285551/3933332)。 –

+0

對不起。我只是想告訴你如何瀏覽器抱怨sqlException。 –

+1

@Tunaki這個問題看起來不一樣,因爲OP在問他什麼時候已經添加了一個try-catch爲什麼仍然會給編譯錯誤。 – grsdev7

回答

-1

如果你在的foreach,你需要做的另一個try塊。您可以將foreach替換爲common,或者只將您的try塊放在foreach塊中。