Java并发学习之八——在线程中处理不受控制的异常

本文介绍了Java中的两种异常类型:检查异常与未检查异常,并通过一个具体的线程示例展示了如何处理检查异常。此外,还演示了如何设置线程的默认异常处理器来捕获并处理未检查异常。

本文是学习网络上的文章时的总结,感谢大家无私的分享。

1Java里有2种异常:

检查异常:这些异常必须强制捕获她们或在一个方法里的throws子句中。

未检查异常:这些异常不用强制捕获它们。

2、在一个线程对象的run()方法里抛出一个检查异常,我们必须捕获并处理她们。因为run()方法不接受throws子句。当一个非检查异常抛出,默认的的行为是在控制台写下stack trace并退出程序。

package chapter;

public class Main8 {

	/**
	 * <p>
	 * </p>
	 * @author zhangjunshuai
	 * @date 2014-8-21 下午2:14:52
	 * @param args
	 */
	public static void main(String[] args) {

		Task task = new Task();
		Thread thread = new Thread(task);
		thread.setUncaughtExceptionHandler(new ExceptionHandler());
		thread.start();
	}

}

package chapter;

public class Task implements Runnable{
	@Override
	public void run() {

		int numero = Integer.parseInt("TTT");
	}

}

package chapter;

import java.lang.Thread.UncaughtExceptionHandler;

public class ExceptionHandler implements UncaughtExceptionHandler{

	@Override
	public void uncaughtException(Thread t, Throwable e) {

		System.out.printf("An exception has been captured\n");
		System.out.printf("Thread:%s\n",t.getId());
		System.out.printf("Exception:%s :%s\n",e.getClass().getName(),e.getMessage());
		System.out.printf("Stack Traace");
		e.printStackTrace(System.out);
		System.out.printf("Thread status:%s\n",t.getState());
		
	}

}

运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值