`
aty
  • 浏览: 36544 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java线程异常处理类UncaughtExceptionHandler

阅读更多

     java提了一个线程异常处理类,当线程执行的时候如果出现异常,可以调用该函数,进行一些善后工作,比如释放资源、清理数据等工作。通过这种方式,线程不需要关注因为异常导致资源不能释放等问题。

package thread.exception;
/*
 * 1、Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个异常而被终止
 * 2、主线程之所以不处理子线程抛出的RuntimeException,是因为线程是异步的,子线程没结束,主线程可能已经结束了
 * 
 * http://blog.csdn.net/wh62592855/article/details/8088827
 */
import java.lang.Thread.UncaughtExceptionHandler;

public class TestThreadExceptionHandler
{

    public static void main(String[] args)
    {
        ExceptionThread thread = new ExceptionThread();
        ThreadExceptionHandler handler = new ThreadExceptionHandler();
        thread.setUncaughtExceptionHandler(handler);
        
        thread.start();
        
    }

}

/**
 * UncaughtExceptionHandler:线程异常回调
 */
class ThreadExceptionHandler implements UncaughtExceptionHandler
{
    public void uncaughtException(Thread a, Throwable e)
    {
        System.out.println("exception occur--"+e);
    }
}

/**
 * 会抛出异常的线程
 */
class ExceptionThread extends Thread
{

    public ExceptionThread()
    {

    }

    public void run()
    {

        for (int i = 3; i >= 0; i--)
        {
            System.out.println(30 / i);
        }
    }

}

 

 

 

 

分享到:
评论

相关推荐

    Android捕获异常处理——UncaughtExceptionHandler

    当Java应用程序中的线程抛出一个异常,并且这个异常没有被当前线程的任何 try-catch 块捕获时,系统会寻找该线程的 `UncaughtExceptionHandler`。默认情况下,Android会打印一个堆栈跟踪并关闭应用程序。但是,...

    Java 实例 - 多线程异常处理源代码-详细教程.zip

    2. **自定义异常处理**:通过实现`Thread.UncaughtExceptionHandler`接口并将其设置为线程的处理器,可以自定义线程异常的处理方式。例如: ```java thread.setDefaultUncaughtExceptionHandler(new Thread....

    java线程异常

    为了确保线程异常的正确处理,通常会在`run()`方法内部进行try-catch-finally结构,或者使用`Thread.UncaughtExceptionHandler`来设定全局的未捕获异常处理器。 测试线程池(testThreadPoolExecutor)可能涉及编写...

    Java多线程之多线程异常捕捉

    在Java多线程编程中,异常处理是一项关键的机制,特别是在多线程环境下,由于线程的并发执行,处理异常的方式与单线程有所不同。本文将深入探讨Java多线程中的异常捕捉,以及如何有效地在多线程环境中处理异常。 ...

    JAVA线程学习(源代码)

    Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来创建。通过继承Thread类或实现Runnable接口,我们可以创建自己的线程。例如,当我们实现Runnable接口时,我们需要重写`run()`方法,该方法...

    java自定义线程模型处理方法分享

    6. **异常处理**:当线程中发生异常时,需要有适当的处理机制来防止程序崩溃,例如使用`try-catch-finally`块,或者定义线程的`uncaughtExceptionHandler`。 自定义线程模型设计时,还需要考虑以下几点: - **线程...

    java线程入门,一本简绍java线程的书

    9. **异常处理**:线程中的异常处理策略,包括`UncaughtExceptionHandler`。 10. **线程安全的集合**:如`ConcurrentHashMap`、`CopyOnWriteArrayList`等,以及它们在多线程环境下的应用。 11. **线程性能优化**:...

    java线程与并行(主要讲解java的nio包某些内容)

    Java线程可以通过继承`java.lang.Thread`类或实现`Runnable`接口来创建。 ##### 创建线程 1. **继承Thread类** - 创建`Thread`类的子类并重写`run()`方法。 - 实例化子类对象,并调用`start()`方法启动线程。 ...

    java UncaughtExceptionHandler Demo

    Java中的`UncaughtExceptionHandler`是Java异常处理机制的一部分,它允许程序员自定义当线程遇到未捕获异常时的行为。这个接口提供了处理未捕获异常的能力,这些异常通常是在线程执行过程中抛出且没有被该线程内部的...

    java线程实践练习

    可以通过设置`uncaughtExceptionHandler`来处理这类异常。 通过阅读《Java并发编程实战》和《Java多线程编程核心技术》这两本书,你可以深入了解以上知识点,并通过实践进一步巩固理解。这些书籍将帮助你解决实际...

    最新java线程入门讲解

    七、线程异常处理 每个线程都有自己的异常处理机制,如果线程在run()方法中抛出未捕获的异常,线程会被终止,并且该异常会被传递给线程的UncaughtExceptionHandler。 总之,Java线程是实现并发和多任务的基础,...

    Java多线程的总结

    八、线程异常处理 Java中的线程有自己的异常处理机制,如果线程中抛出了未捕获的异常,该线程会被终止。可以通过设置Thread的UncaughtExceptionHandler来捕获和处理这些异常。 九、线程安全类 Java集合框架中有一些...

    java源码:Java线程错误捕获工具 CheckThread.zip

    1. **线程异常处理器类(ThreadExceptionHandler)**:这是实现`Thread.UncaughtExceptionHandler`接口的类,其中`uncaughtException`方法是核心,它接收两个参数,一个是出现异常的线程对象,另一个是未捕获的异常...

    java 线程java 线程

    当线程中抛出未捕获的异常时,线程会突然终止,除非通过try-catch-finally结构捕获并处理异常,或者使用UncaughtExceptionHandler处理未被捕获的异常。 以上就是关于Java线程的一些基础知识,包括线程的创建、状态...

    详细JAVA线程第三版

    线程间的异常处理策略,如Thread.UncaughtExceptionHandler,能够帮助我们在一个线程发生未捕获异常时,进行适当的清理和通知。 最后,书中可能会包含一些实战案例和性能调优技巧,帮助读者将理论知识应用到实际...

    java、杀死启动进程、定时执行程序、隐藏黑窗口(dos窗口)、线程异常死亡(保活)

    线程异常死亡(保活)是指确保即使某个线程发生异常,程序仍能继续运行。我们可以通过捕获并处理异常,或者使用`Thread.UncaughtExceptionHandler`来实现。例如: ```java Thread....

    java线程学习笔记

    Java线程学习笔记涉及了Java多线程编程的多个关键知识点,本篇知识点整理将详细解释每个概念及其在Java中的实现方式。 基本知识部分包含了Java线程编程的基础内容,它们是并发编程的基石。 任务Runnable是一个接口...

    java多线程多人聊天系统

    Java的Thread.UncaughtExceptionHandler接口可以用来设置未捕获异常的处理器,确保线程在出现异常时能正确关闭,而不影响其他线程。 5. **线程池**:为了更好地管理和优化线程,Java提供了ExecutorService和...

    Java多线程的其他知识_动力节点Java学院整理

    除了线程组和异常处理,Java多线程还包括许多其他重要概念,如线程的生命周期(新建、可运行、运行、阻塞和死亡),同步机制(synchronized关键字、Lock接口及其实现如ReentrantLock),线程间的通信(wait()、...

    Java 线程简介电子书

    Java线程是多任务编程中的核心概念,它允许程序同时执行多个不同的任务,极大地提高了程序的效率和响应性。在Java中,线程是程序执行的最小单元,每个线程都有自己的程序计数器、虚拟机栈、本地方法栈和一部分堆内存...

Global site tag (gtag.js) - Google Analytics