java线程错误处理类UncaughtExceptionHandler

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);
        }
    }

}