コード
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();
}
改善された結果として実行
メインスレッドの例外がカスタム例外ハンドラに捕捉されないように