如何获取线程池中的异常

1.若不需要处理返回值,则可以使用execute()方法来提交任务,当任务发生异常时,线程会抛出异常,同时我们也可以在run方法中捕获处理异常

2.若需要返回值,需要使用submit()方法时

(1)直接在run方法中捕获异常,包括未受检异常

(2)利用Future对象的get()方法,对该方法捕获异常,因为线程中出现的异常会抛给get()方法,简单来说,就是线程中出现了异常,就相当于get()方法出现了异常

(3)重写ThreadpoolExecutor的executor.afterExecute()方法,处理传递到afterExecute()方法的异常。因为该方法是线程池调用任务的run/call方法后,必然调用的方法,所以可以通过重写该方法来处理异常(若有异常,会被设置进该方法的入参)

(4)设置线程异常处理器UncaughtException()方法处理异常

最后:附上后端技术交流圈,欢迎各位大佬入圈交流技术......V:ff1341658(先添加好友后拉群,请备注:小白不黑)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值