首页 > 解决方案 > 在 java 中使用 lambda 表达式引发自定义异常

问题描述

我环顾四周,但似乎找不到正确的答案。因为我有一个项目并且想要使用 lambda 表达式,所以我正在尝试减少我的代码。我是 lambda 的新手并且仍在练习它,我一般遇到 lambda 的“异常处理”,但是,对于我的具体问题,我似乎找不到。

我有一个完整的项目要修复,但这里有一个我想减少的代码示例。

代码:

for (Customer allCustomers : cust.getAllCustomers()) {
    if (customer.getEmail().equals(allCustomers.getEmail()))
        throw new CustomerAlreadyExists(
                "ERROR: Cannot add customer. email is already in use.");

}

我试过的:

cust.getAllCustomers()
    .stream()
    .filter(x -> x.getEmail().equals(customer.getEmail())
    .forEach(throw new CustomerAlreadyExists(
            "ERROR: Cannot add customer. email is already in use."));

我的问题似乎是抛出异常。(不会编译)否则我认为表达式很好。有没有办法用一个衬里抛出异常?

谢谢。仍然在学习。

标签: javaexceptionlambdajava-stream

解决方案


你可以这样做:

cust.getAllCustomers().stream()
    .filter(x -> x.getEmail().equals(customer.getEmail())
    .forEach(s -> {throw new CustomerAlreadyExists("ERROR: Cannot add customer. email is already in use.");});

推荐阅读