开发者社区> 问答> 正文

怎么进行异常处理?

怎么进行异常处理?

展开
收起
Medusa 2021-10-19 19:14:25 320 0
1 条回答
写回答
取消 提交回答
    1. 不论是用execute 还是submit,都可以自己在业务代码上加try-catch 进行异常处理。我一般喜欢使用这种方式,因为我喜欢对不同业务场景的异常进行差异化处理,至少打不一样的日志吧。
    2. 如果是execute,还可以自定义线程池,继承ThreadPoolExecutor 并复写其afterExecute(Runnabler, Throwablet)方法。
    3. 或者实现Thread.UncaughtExceptionHandler 接口,实现void uncaughtException(Thread t, Throwable e);方法,并将该handler 传递给线程池的ThreadFactory。
    4. 但是注意,afterExecute 和UncaughtExceptionHandler 都不适用submit。因为通过上面的FutureTask.run()不难发现,它自己对Throwable 进行了try-catch,封装到了outcome 属性,所以底层方法execute 的Worker 是拿不到异常信息的。

    资料来源:《Java开发者面试百宝书》,链接:https://developer.aliyun.com/topic/download?id=7899

    2021-10-20 12:19:40
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载