线程异常
来源:互联网 发布:编程来回打括号好烦 编辑:程序博客网 时间:2024/05/17 02:49
线程代码不能抛出任何checked异常。,checked异常都只能被线程本身消化掉。checked异常一定要在线程内部消化。 但是,线程代码中是可以抛出错误(Error)和运行级别异常(RuntimeException)的。Erro通常是vm处理的,而RuntimeException确是比较正常的,如果在运行过程中满足了某种条件导致线程必须中断,可以选择使用抛出运行级别异常来处理。
当线程代码抛出运行级别异常之后,线程会中断。但是对于invoke此线程的主线程不受这个影响,不会处理这个RuntimeException,而且根本不能catch到这个异常。会继续执行自己的代码 。
所以:线程方法的异常只能自己来处理。
可以通过给某个thread设置一个UncaughtExceptionHandler,确保在该线程出现异常时能通过回调UncaughtExceptionHandler接口的uncaughtException方法来处理异常,这样的好处或者说目的是可以在线程代码边界之外(Thread的run()方法之外),有一个地方能处理未捕获异常。但是要特别明确的是:虽然是在回调方法中处理异常,但这个回调方法在执行时依然还在抛出异常的这个线程中!
另外还要特别说明一点:如果线程是通过线程池创建,线程异常发生时UncaughtExceptionHandler接口不一定会立即回调。
一些情况下主线程的调用方可能只是想知道子线程执行过程中发生过哪些异常,而不一定会处理或是立即处理,那么发起子线程的方法可以把子线程抛出的异常实例收集起来作为一个Exception的List返回给调用方,由调用方来根据异常情况决定如何应对。不过要特别注意的是,此时子线程早以终结。
- 线程异常
- 线程异常
- 线程组获取线程异常
- 异常和线程
- 关于SWT线程异常
- API 线程 异常
- JAVA 线程出现异常
- 捕获线程异常
- 线程中的异常处理
- 捕捉线程的异常
- 关于线程中的异常
- 3.11 异常与线程
- 线程异常抛出问题
- zk的“异常”线程
- 捕捉线程异常
- java 线程异常捕获
- 线程异常处理
- java 线程 捕获异常
- 第一篇博文,记录自己的研究生学习历程
- vue项目开发遇到的问题:如何改变请求的host以及referer抓取做了host以及referer限制的接口数据
- Java 使用注解检验手机号
- Linux下内存的使用率正确的算法
- 一千个不用 Null 的理由
- 线程异常
- Emgu.CV.CvInvoke的类型初始值设定项引发异常--解决办法
- 【UWP开发】uwp如何在win10和xbox one本地保存存档
- 自定义协议从浏览器中启动本地应用程序
- a 链接的 download 属性实操
- Hystrix文档-实现原理
- Java生成验证码
- mongodb笔记01(更新删除文档)
- webservice传输文件