メインスレッドは、異常な子スレッドをキャッチすることはできません

コード

package com.dq;

public class ThreadTest implements Runnable
{
	@Override
	public void run() 
	{
		throw new RuntimeException();
	}
	
	public static void main(String[] args) 
	{
		ThreadTest task = new ThreadTest();
		Thread thread = new Thread(task);
		try 
		{
			thread.start();
		} 
		catch (Exception e) 
		{
			System.out.println("捕获到异常");
		}
	}
}

結果の実装を
ここに画像を挿入説明
見ることができると、自然にはないキャプチャーを例外をスローし、catchブロックの内容を実行アップ実行しませんしませんでした

改善します

カスタム例外トラップは、インターフェイスを実装したuncaughtExceptionHandler

class MyExceptionHandler implements UncaughtExceptionHandler
{
	@Override
	public void uncaughtException(Thread t, Throwable e) 
	{
		System.out.println("自定义异常处理器处理异常,线程名称" + t.getName() + " 异常:" + e);
	}
}

カスタム例外ハンドラについて、メインスレッドに設定してください

	public static void main(String[] args) 
	{
		Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler());
		ThreadTest task = new ThreadTest();
		Thread thread = new Thread(task);
		thread.start();
	}

改善された結果として実行
ここに画像を挿入説明
メインスレッドの例外がカスタム例外ハンドラに捕捉されないように

公開された236元の記事 ウォン称賛10 ビュー10000 +

おすすめ

転載: blog.csdn.net/gunsmoke/article/details/104598311