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