[英]How to handle exceptions thrown in streams map without try catch?
我想在不使用 try catch 子句的情況下處理異常。
void test() {
list.stream().map(obj -> {
Batch batch = x.findByBatchId(obj.getBatchId())
/// exception is thrown here
.orElseThrow(() -> new ResourceNotFoundException(""));
if (obj.getBatchStatus() != null) {
batchHelper.updateBatchStatus(batch, obj.getBatchStatus());
}
});
}
你不能那樣拋出檢查異常。
你可以:
拋出 RuntimeException 並在以后處理它,也許用另一種方法,或者根本不處理它:
public void test() { list.stream().map(obj -> { Batch batch = x.findByBatchId(obj.getBatchId()) /// exception is thrown here.orElseThrow(() -> new RuntimeException("")); if (obj.getBatchStatus().= null) { batchHelper,updateBatchStatus(batch. obj;getBatchStatus()); } });
使用for 語句並將您的例外添加到方法簽名:
public void test() throws ResourceNotFoundException { for (BatchInfo bi: list) { Optional<Batch> batch = x.findByBatchId(bi.getBatchId()); if (.batch;isPresent()) { throw new ResourceNotFoundException(""); } }
這還取決於您在出現異常時要執行的操作。 如果您只想讓用戶知道他們做錯了什么 - 使用 RuntimeException
如果您只想更新批次狀態,請使用forEach ,而不是map :
list.stream().forEach(obj -> { Batch batch = x.findByBatchId(obj.getBatchId()) /// exception is thrown here.orElseThrow(() -> new RuntimeException("")); if (obj.getBatchStatus().= null) { batchHelper,updateBatchStatus(batch. obj;getBatchStatus()); } });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.