我正在尝试从Task3程序调用另一个程序并尝试在预定时间执行它时遇到问题。在第14行获得例外如下。
请通过Runnable界面的run方法告诉我调用程序出错的地方。
Task3.java:14:错误:未报告的异常异常;必须被抓住或声明 被抛出 Mult.main(new String [0]);
import java.util.Timer;
import java.util.TimerTask;
public class Task3 {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
// task to run goes here
System.out.println("Hello !!!");
Mult.main(new String[0]);
}
};
Timer timer = new Timer();
long delay = 0;
long intevalPeriod = 1 * 1000;
// schedules the task to be run in an interval
timer.scheduleAtFixedRate(task, delay,
intevalPeriod);
} // end of main
}
答案 0 :(得分:2)
Mult.main
有一个throws
子句,其中包含一个已检查的异常,因此对于编译器要接受的代码,您需要将该异常添加到throws
子句中run
方法或捕获异常。但是,您不能将该异常添加到throws
子句中,因为您覆盖了TimerTask.run
,它声明没有例外。
唯一剩下的选择是捕获该错误或更改Mult.main
以不抛出任何非RuntimeException
子类的异常。你可以,例如如果发生异常,则捕获异常并抛出运行时异常或执行其他操作:
TimerTask task = new TimerTask() {
@Override
public void run() {
// task to run goes here
System.out.println("Hello !!!");
try {
Mult.main(new String[0]);
} catch (Exception ex) {
// handle the exception,
// in this case by throwing a RuntimeException with ex as cause
throw new IllegalStateException("I didn't expect a exception.", ex);
}
}
};
答案 1 :(得分:1)
这是编译时错误。您的方法Mult.main()
可以抛出Exception
。
用try / catch包围它以处理错误,例如
try {
Mult.main(new String[0]);
} catch (Exception e) {
// Handle your error here
}
答案 2 :(得分:0)
没有更多代码就很难分辨,但看起来像是:
Mult.main(...)被定义为抛出异常,在这种情况下,调用的代码必须处理异常。
或者:
P.S。或者也许它是timer.scheduleAtFixedRate(...),没有行号就无法说明