Thread UncaughtExceptionHandler
程序员文章站
2022-07-12 18:37:43
...
做web开发的时候,一般都是在Controller统一捕捉异常,在业务逻辑里抛出自定义的异常;如果代码中使用了多线程,线程中出错,或者你在线程中抛出一个异常,在最外层Controller里是无法捕捉到线程中的异常的,
Thread类中定义了一个内部接口UncaughtExceptionHandler,此接口用来统一处理线程出错后的处理,自己可定义一个类,来处理对应的错误
class MyHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { System.out.println("我在处理错误,你呢?"); System.out.println("线程" + t.getName() + "抛出异常!"); e.printStackTrace(); } } public static void main (String[] args) { try { ThreadWithExcpetion t1 = new ThreadWithExcpetion(); t1.setUncaughtExceptionHandler(new MyHandler()); t1.start(); } catch (Exception e) { System.out.println("能捕捉到吗?"); } }
上面的代码,只会执行MyHandler类的uncaughtException方法,而不会进入catch语句块中!
推荐阅读
-
MySQL线程缓存thread_cache_size参数优化
-
Linux qt5 thread线程编程
-
什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )?
-
MySQL Thread pool 操作过程
-
No Session found for current thread 咋解决?ehcache失效 咋解决?
-
python线程锁(thread)学习示例
-
C#利用System.Threading.Thread.Sleep即时输出信息的详解
-
Java使用Thread创建多线程并启动操作示例
-
深入多线程之:解析线程的交会(Thread Rendezvous)详解
-
Mysql Error Code : 1436 Thread stack overrun