首页 > 解决方案 > 事件发生时停止功能

问题描述

为了简单起见,假设我有一个包含 10 行代码的函数,每行需要 1 秒才能执行。现在这个函数中的代码应该只在一个条件下运行,如果这个条件在代码执行过程中没有得到验证(例如在第 5 行和第 6 行之间),函数应该立即停止。

如果不在每一行之前放置一个if(condition)return; 语句,我怎样才能实现这种行为?

这就是我想象的方式:

private void function(){
    eventsManager.register(new OnConditionChangedListener() {
        @Override
        public void onConditionUnverified() {
            //something like function.exit()
        }
    });

    line 1;
    line 2;
     ...
    line 5;
    //onConditionUnverified is triggered from somewhere
    //the next lines should not be executed
     ...
    line 10;
}

标签: javaalgorithm

解决方案


您可以抛出 RuntimeException 然后 function() 的执行将被中断。

您愿意尝试使用诸如 eventsManager.check(...) 来控制您的代码流,每个代码流路径更改都应该由您的代码管理。如果您不介意性能损失,则抛出异常并使用 try-catch 块来控制代码流路径是一个好方法 :)


推荐阅读