【问题标题】:How to rethrow exception inside lambda expression? [duplicate]如何在 lambda 表达式中重新抛出异常? [复制]
【发布时间】:2020-06-28 13:58:27
【问题描述】:

如何在 lambda 中处理和重新抛出异常?当我尝试用 try/catch 块包围调用时,它只是在 lambda 表达式中捕获它。我在方法签名中有 ServiceException,所以我只想重新抛出它。有可能还是我错过了什么?

 BiFunction<Account, LocalDate, AccountBalance> getBalance;

 getBalance = (account, date1) -> balanceProvider.getBalance(account, date1); //balanceProvider.getBalance unhandled ServiceException

【问题讨论】:

  • 没有标准的方法来做到这一点,这并不意味着它是不可能的。以下是一些可能有用的信息; dzone.com/articles/…
  • 你能说明你在哪里调用 BiFunction 吗?

标签: java exception


【解决方案1】:

我曾经捕获一个已检查的异常并重新抛出未检查的异常。 比如:

IntStream.range(1,3).forEach(i -> {
        try {
            TimeUnit.SECONDS.sleep(10);
        } catch (InterruptedException e) {
            throw new RuntimeException("InterruptedException was caught");
        }
    });

或者在你的情况下:

getBalance = (account, date1) -> {
    try {
        balanceProvider.getBalance(account, date1)
    } catch (ServiceException e) {
        throw new ServiceRTException("blabla");
    }
};

【讨论】:

    猜你喜欢
    • 2014-10-19
    • 2022-01-23
    • 2015-07-21
    • 1970-01-01
    • 2015-10-16
    • 2018-01-03
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多