`
dongya1987
  • 浏览: 47766 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

TimerTask抛不出运行时异常

阅读更多

用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住处理掉。

分享到:
评论

相关推荐

    TimerTask执行每日定时任务

    需要注意的是,`Timer`和`TimerTask`在多线程环境中运行,因此必须确保任务代码的线程安全,尤其是在操作共享数据时。 `TimerTask`和`Timer`虽然简单易用,但它们并不是Java中唯一实现定时任务的方法。在更复杂的...

    TimerTaskDemo

    此外,`Timer`的调度线程会在所有`TimerTask`执行完毕后才结束,因此如果有一个`TimerTask`因为某种原因(比如抛出未捕获异常)而无法完成,那么整个`Timer`对象可能会一直存在,造成资源泄漏。在Java 5及以上版本中...

    Android Timer TimerTask Handler

    - 考虑到`Timer`和`TimerTask`可能存在的内存泄漏问题,特别是在Activity中使用时,记得在不再需要定时任务时取消它们。 - 使用`Handler`时,确保在不需要处理消息时调用`removeCallbacksAndMessages(null)`,防止...

    Web中使用Timer和TimerTask定时获取数据。

    3. **异常处理**:`TimerTask`的`run()`方法没有直接抛出异常的机制,如果`run()`方法内部抛出未捕获的异常,会导致`TimerTask`被标记为故障,并不再执行后续调度。因此,需要在`run()`方法中进行适当的异常处理。 ...

    Timer和TimerTask的使用

    ### Timer和TimerTask的使用详解 #### 一、引言 `Timer` 和 `TimerTask` 是Java中用于实现定时任务的重要工具。它们提供了一种简单有效的方式来安排任务的执行,既可以一次性执行也可以周期性地执行。这对于实现...

    TimerTask与Timer设计时间监控

    在Java编程语言中,`TimerTask`和`Timer`是两个关键类,它们用于实现定时任务和调度。这两个类在处理需要定期执行的任务时非常有用,例如数据刷新、任务调度或者周期性的系统检查等。本篇文章将深入探讨`TimerTask`...

    Timer,TimerTask 动态显示文字

    这是因为`TimerTask`运行在后台线程,不能直接修改UI,必须通过主线程来处理。 然后,我们可以创建一个`Timer`实例,并使用`schedule()`方法来安排`TimerTask`的执行: ```java Timer timer = new Timer(); ...

    Handler和TimerTask实现的简易定时器

    Handler更适合用于处理与UI相关的定时任务,因为它始终在主线程中运行,不会阻塞UI。而TimerTask则更适用于后台任务,它的执行线程与创建它的线程无关,但不保证精确的定时执行,可能受到系统调度的影响。在实际开发...

    Android中使用定时器TimerTask类介绍.txt

    Android中使用定时器TimerTask类介绍.txt Android中使用定时器TimerTask类介绍.txt

    Java并发Timer源码分析

    同时,如果TimerTask抛出未检查的异常会终止timer线程。 Timer的使用可以分为两种情况,一种是使用Timer来执行延时任务,另一种是使用Timer来执行周期性任务。在使用Timer来执行延时任务时,需要在TimerTask中实现...

    JAVA定时器之Timer+TimerTask

    - `Timer`调度的任务在执行时,如果抛出未捕获的异常,会终止`Timer`线程,并可能导致整个应用程序退出。因此,建议在`TimerTask`的`run()`方法中捕获异常。 - 虽然`Timer`可以调度多个任务,但这些任务是按照FIFO...

    spring + jdk TimerTask定时器

    Spring框架提供了一套强大的定时任务解决方案,而JDK自带的`TimerTask`类则是实现定时任务的基础工具。本文将深入探讨如何在Spring框架中结合JDK的`TimerTask`来创建和管理定时任务。 ### Spring定时任务简介 ...

    ServletContextListener,Timer,TimerTask学习笔记

    在Java Web开发中,`ServletContextListener`、`Timer`和`TimerTask`是三个非常重要的概念,它们分别涉及Web应用程序的生命周期管理、定时任务的执行和控制。下面将详细讲解这三个概念及其应用。 首先,`...

    Java中的Timer和TimerTask的使用.doc

    默认构造函数创建非守护线程,而带参数的构造函数可以指定线程是否作为守护线程运行,或者设置线程的名称。 `TimerTask`是一个抽象类,它实现了`Runnable`接口,因此可以被线程执行。你需要通过继承`TimerTask`并...

    TimerTask_Demo.zip

    3. `TimerTask`的`run()`方法抛出的异常会被吞掉,建议在`run()`中处理可能出现的异常,避免隐藏错误。 这个"TimerTask_Demo.zip"提供的例子应该包含了上述的代码框架,你可以下载后进行查看和学习,以便更好地理解...

    Timer与TimerTask(计时器)

    ### Timer与TimerTask详解 在Java编程语言中,`Timer`和`TimerTask`是用于执行定时任务的重要类。这两个类通常被用来处理那些需要在指定时间或周期性执行的任务,比如定时清理缓存、定时更新数据库等场景。 #### ...

    Spring定时器TimerTask用法

    这里,我们在`@PostConstruct`回调方法中初始化`TimerTask`,并在`@PreDestroy`回调方法中取消定时器,以确保应用关闭时定时器能被正确清理。 4. **其他定时策略** `@Scheduled`注解支持多种定时策略,例如: - ...

    JavaTimer和TimerTask实例教程Java开发

    因此,编写`TimerTask`时应处理好可能出现的异常情况。 - 如果需要更复杂的定时任务调度,比如多线程并发执行、精确的时间控制等,可以考虑使用Java 5及更高版本引入的`java.util.concurrent`包中的`...

    Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作

    下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo。 需要注意的问题主要有两点: 1、Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句 2、只能在UI主线程中更新...

    ICE_Timer and TimerTask相关

    - 如果任务执行过程中抛出了异常,定时器会忽略该异常继续执行后续任务。 - **cancel**:`bool cancel(const TimerTaskPtr& task);` 用于取消已调度的任务。该方法返回 `true` 表示成功取消,`false` 则表示未...

Global site tag (gtag.js) - Google Analytics