【发布时间】:2010-07-14 12:54:32
【问题描述】:
可能是一个愚蠢的问题...但无论如何...
我已经设置了quartz,可以安排作业,我可以确认作业(实现IJob接口)正在工作。
查看网站上的文档,(教程第 3 课):
您可以从执行方法中抛出的唯一异常类型是
JobExecutionException。
我希望当我没有明确处理的异常发生时,它应该抛出一个 JobExecutionException,以便我可以将它记录到“父”应用程序中。我已经将我的代码包装在一个 try catch 中,并抛出了 JobExecutionException,但现在在哪里处理呢?
我不会在任何地方调用 execute 方法,它由 Quartz 处理(在单独的线程上)。那么,当它发生时我该如何处理该错误。我真的不想吞下作业中的错误
【问题讨论】:
-
好的,做了更多的研究,看起来 JobListener 就是我要找的。现在弄清楚它将如何处理异常。
-
annnnnd.... 不走运。即使有监听器,应用程序在抛出异常时也会崩溃。帮助!
-
@tardomatic-如果您有一个连接到作业/组名称的作业侦听器,无论作业成功还是失败,都会调用该侦听器。在您抛出 JobExecutionException(基于您检测到错误)后,Quartz 将认为作业未完成(根据定义,Quartz 认为作业完成除非您触发 JobExecutionException)。现在,当您在侦听器的 JobWasExecuted() 方法中时,您可以检查 JobExecutionException 参数以查看它是否已设置。现在您知道作业是否失败,并且您可以选择在将来再次执行作业之前执行清理等任务。
标签: c# exception-handling quartz.net