package com.dwz.concurrency.chapter11; /** * Thread的run方法是不能throw出異常的,只能在日志或者console中打印出來 */ public class ThreadException { private final static int A = 10; private final static int B = 0; public static void main(String[] args) { Thread t = new Thread(()->{ try { Thread.sleep(5_000); int result = A/B; System.out.println(result); } catch (InterruptedException e) { e.printStackTrace(); } }); //該方法可以在線程外面捕獲到異常 t.setUncaughtExceptionHandler((thread, e)->{ System.out.println(e); System.out.println(thread); }); t.start(); } }
使用了setUncaughtExceptionHandler后會把異常處理交給setUncaughtExceptionHandler,線程里面的異常不再輸出日志信息