Java 石英工作赢得';t执行包含异常的方法(try/catch或throws)

Java 石英工作赢得';t执行包含异常的方法(try/catch或throws),java,quartz-scheduler,job-scheduling,Java,Quartz Scheduler,Job Scheduling,正如标题所提到的,我正在尝试使用Quartz来安排一个定期的工作来发送电子邮件。 一个基本的作业测试工作得很好(一些hello world打印,等等),但是一旦我调用一个包含try/catch子句或抛出一个exeption的方法,作业就不会调用它。 下面是我负责工作处理的不同代码片段 BAPJob.java:我要执行的作业 import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExec

正如标题所提到的,我正在尝试使用Quartz来安排一个定期的工作来发送电子邮件。 一个基本的作业测试工作得很好(一些hello world打印,等等),但是一旦我调用一个包含try/catch子句或抛出一个exeption的方法,作业就不会调用它。 下面是我负责工作处理的不同代码片段

BAPJob.java:我要执行的作业

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import com.echallenge.util.MailService;

public class BAPJob implements Job {

    public void execute(JobExecutionContext context) throws JobExecutionException {

        System.out.println("EXECUTION STARTING ...");

        MailService.test();

        System.out.println("EXECUTION ENDING");
    }

}
MailService.Java:包含我要调用的方法的类

import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;

public class MailService {

    public static void test(){
        System.out.println("TESTING I ...");

        try {
            InternetAddress.parse("to-email@gmail.com");
        } catch (AddressException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
java:启动作业的servlet(在web.xml中有一个2值)

在Tomcat服务器上启动应用程序后,我得到以下输出:

EXECUTION STARTING ...
EXECUTION STARTING ...
EXECUTION STARTING ...
谢谢你们

这份工作不会叫它

输出指示正在调用您的作业。添加try..catch以捕获加载MailService类时出现的任何错误:

try {
    MailService.test();
}
catch (Exception e) {
    e.printStackTrace();
}

我找到了解决办法,我会把它留在这里以防万一

因为try-catch只捕获异常,所以我还需要捕获“错误”,所以我捕获了Throwable,它向我显示了一个以前不可见的消息错误

因此,我将我的工作改为:

public class BAPJob implements Job {

    public void execute(JobExecutionContext context) throws JobExecutionException {

        System.out.println("EXECUTION STARTING ...");

        try {
            InternetAddress.parse("to-email@gmail.com");
        } catch (Throwable t) {
            t.printStackTrace();
        }

        System.out.println("EXECUTION ENDING");
    }

}

嘿@shnplr,谢谢你的回答。当使用异常捕获所有错误时,作业退出邮件服务的测试中间();方法,我得到一个输出:
开始执行。。。测试我。。。执行开始。。。测试我。。。执行开始。。。测试I…
public class BAPJob implements Job {

    public void execute(JobExecutionContext context) throws JobExecutionException {

        System.out.println("EXECUTION STARTING ...");

        try {
            InternetAddress.parse("to-email@gmail.com");
        } catch (Throwable t) {
            t.printStackTrace();
        }

        System.out.println("EXECUTION ENDING");
    }

}