java捕获定时器抛出的异常_定时任务quarter 捕获异常抛出异常的坑

在写定时任务的时候, 捕获了 方法的 异常,然后抛出去

} catch (Exception e) {

logger.error("定时任务>>更新直接上级出问题>>>执行任务出错了..."+e);

JobExecutionException jobe = new JobExecutionException(e);

jobe.setRefireImmediately(true);

throw jobe;

}

看起来没有问题,测试的时候,发现 当出现了一个 小小的SQL异常的时候,比如 多一个 引号 '

结果发现它是捕获了,但是不知道抛去哪里了, 定时任务不没有结束,反而 重新 继续 执行了,一直循环 执行下去, 被吓到了。 目前还不知道是什么原因。如果是 空指针异常啊,什么的 又没有出现这样的异常,方法就直接结束了,很奇怪。估计是和 框架 架构有关吧,总之为了防止坑,还是 结束方法执行吧,简单暴力。 为了反正出现死异常循环,因此 捕获异常的时候, 就结束方法执行。

} catch (Exception e) {

logger.error("定时任务>>更新直接上级出问题>>>执行任务出错了..."+e);

return;

}

百度了一些 找到原因的 了

问题1 如果你的任务执行发生错误了怎么办呀!

Quartz提供了二种解决方法

1 立即重新执行任务

2 立即停止所有相关这个任务的触发器

问题2 怎么去执行呢

Quartz的解决方式是

在你的程序出错时,用Quartz提供的JobExecutionException类相关方法很好的解决

1 立即重新执行任务

Java代码 收藏代码

try {

int zero = 0;

@SuppressWarnings("unused")

int calculation = 4815 / zero;

} catch (Exception e) {

_log.error("执行任务出错了...");

JobExecutionException e2 =

new JobExecutionException(e);

// this job will refire immediately

e2.setRefireImmediately(true);

throw e2;

}

2 立即停止所有相关这个任务的触发器

try {

int zero = 0;

@SuppressWarnings("unused")

int calculation = 4815 / zero;

} catch (Exception e) {

_log.info("--- Error in job!");

JobExecutionException e2 =

new JobExecutionException(e);

// Quartz will automatically unschedule

// all triggers associated with this job

// so that it does not run again

e2.setUnscheduleAllTriggers(true);

throw e2;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值