Java 石英异常处理

Java 石英异常处理,java,exception,quartz-scheduler,Java,Exception,Quartz Scheduler,我有以下工作。我用它做了一些测试 public void execute(JobExecutionContext context) throws JobExecutionException { try { Object result = callable.call(); } catch (Exception e) { JobExecutionException e2 = new JobExecutionException(e);

我有以下工作。我用它做了一些测试

public void execute(JobExecutionContext context) throws JobExecutionException {
    try {

        Object result = callable.call();

    } catch (Exception e) {
        JobExecutionException e2 = new JobExecutionException(e);
        if (REFIRE_IMMEDIATELY.equals(policy)) {
            e2.setRefireImmediately(true);
        } else if (UNSCHEDULE_ALL_TRIGGERS.equals(policy)) {
            e2.setUnscheduleAllTriggers(true);
        } else {
            e2.setUnscheduleFiringTrigger(true);
        }
        throw e2;
    }
}
但是我不能完全理解设置计划外触发器与设置计划外触发器之间的区别。不幸的是,没有Javadoc

有人能帮我吗


谢谢,在quartz中,您可以使用多个触发器触发您的工作。如果作业执行失败的原因是触发器固有的,则可能需要取消该特定触发器的计划。这就是我对setUnscheduleFiringTrigger(true)的理解

如果问题出在作业本身而不是触发器上,那么无论是谁或是什么原因启动了作业,每次执行都会失败。因此,为了避免多次执行失败的麻烦,仅仅因为不同的触发器触发了作业,您可以使用setUnscheduleAllTriggers(true)来取消触发此作业的所有触发器的计划,以防止错误作业的任何进一步执行

总而言之

  • setUnscheduleFiringTrigger
    =>停止调用此特定作业运行的触发器
  • setUnscheduleAllTriggers
    =>停止调用此作业的所有触发器

有关异常用法的示例,请参见。

Yes查看了此示例。我只是忘记了多个触发器可能会触发工作。谢谢你的解释。