用J2SE和Android,都运行相同的TimerTask,表现
1. Java代码
import java.util.Timer;
import java.util.TimerTask;
public class ddd {
public static void main(String[] args) throws Exception {
Timer timer = new Timer();
timer.schedule(new Task(), 10, 1000);
}
static class Task extends TimerTask {
public void run() {
System.out.println("**");
int i = 5 / 0;
System.out.println(i);
}
}
}
2. Andrdoi代码
import android.app.Activity;
import android.os.Bundle;
import java.util.Timer;
import java.util.TimerTask;
public class ddd extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Timer timer = new Timer();
timer.schedule(new Task(), 10, 1000);
}
static class Task extends TimerTask {
public void run() {
System.out.println("**");
int i = 5 / 0;
System.out.println(i);
}
}
}
表现为,J2SE程序会因java.lang.ArithmeticException: / by zero挂掉。Android程序会每隔一秒打印一行“**”,就是说错误代码没有抛出异常,而是被简单的忽略掉。
所以,开发TimerTask时要小心的处理异常,把可能抛出的异常都catch住处理掉。