本文主要参考:《think in java》java
好,下面上货。python
package com.xueyou.demo.theadexceptiondemo; public class ThreadExceptionRunner implements Runnable{ @Override public void run() { throw new RuntimeException("error !!!!"); } }
package com.xueyou.demo.theadexceptiondemo; import com.sun.glass.ui.TouchInputSupport; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; public class ThreadExceptionDemo { public static void main(String[] args) { try { Thread thread = new Thread(new ThreadExceptionRunner()); thread.start(); } catch (Exception e) { System.out.println("========"); e.printStackTrace(); } finally { } System.out.println(123); } }
package com.xueyou.demo.theadexceptiondemo; import com.sun.glass.ui.TouchInputSupport; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; public class ThreadExceptionDemo { public static void main(String[] args) { try { Thread thread = new Thread(new ThreadExceptionRunner()); thread.start(); } catch (Exception e) { System.out.println("========"); e.printStackTrace(); } finally { } System.out.println(123); ExecutorService exec = Executors.newCachedThreadPool(new HandleThreadFactory()); exec.execute(new ThreadExceptionRunner()); exec.shutdown(); } } class MyUncaughtExceptionHandle implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { System.out.println("caught " + e); } } class HandleThreadFactory implements ThreadFactory { @Override public Thread newThread(Runnable r) { System.out.println("create thread t"); Thread t = new Thread(r); System.out.println("set uncaughtException for t"); t.setUncaughtExceptionHandler(new MyUncaughtExceptionHandle()); return t; } }
package com.xueyou.demo.theadexceptiondemo; import com.sun.glass.ui.TouchInputSupport; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; /** * Created by wuxueyou on 2018/6/24. */ public class ThreadExceptionDemo { public static void main(String[] args) { try { Thread thread = new Thread(new ThreadExceptionRunner()); thread.start(); } catch (Exception e) { System.out.println("========"); e.printStackTrace(); } finally { } System.out.println(123); Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandle()); // ExecutorService exec = Executors.newCachedThreadPool(new HandleThreadFactory()); ExecutorService exec = Executors.newCachedThreadPool(); exec.execute(new ThreadExceptionRunner()); exec.shutdown(); } }