中断for循环并在发生特定情况时引发异常

问题描述 投票:0回答:1

所以我要遍历一个帐户列表,我想破坏该列表中所有帐户的整个“ for循环”,并且同时在发生某种情况时同时引发异常:

                accounts.forEach(account -> {
                try {
                    if(isSomethingHappens()) {
                        String errorMsg = "bla bla, you can't do that cuz condition is happening";
                        printError(errorMsg);
                        throw new Exception(errorMsg); // AND I also, in addition to the exception, I wanna break the whole loop here
                    }

                } catch (Exception e) {
                            printError(e);
                }}

有人有什么优雅的方法吗?也许用我自己的例外包装它,并在这种ceratin盒子上只抓住它?我的需求是否有良好的已知做法?感谢您的帮助,并非常感谢!

for-loop exception java-8 break throw
1个回答
0
投票

一种执行此操作的好方法是重新引发内部catch块中的错误。这将把控制权交给下一个外部try / catch。因此,在foreach构造之外放置另一个try / catch块。

  • 发生异常,并被最里面的try捕获。
  • printError()的东西完成了。
  • 重新引发异常,这会杀死forEach
  • try周围的forEach捕获了重新引发的异常。
© www.soinside.com 2019 - 2024. All rights reserved.