【发布时间】:2014-06-04 05:08:39
【问题描述】:
我正在编写一个相当大的多线程应用程序,线程具有许多不同的角色(例如事件处理、指标、网络)。目前,如果有任何无法处理的不一致,它将表现为异常。由于确实无法从其中一些恢复,我一直将它作为ApplicationDeathException 类型的运行时异常重新抛出。
任何需要处理关闭的类都会针对这个异常从一个 catch 块中调用它,然后重新抛出它以便它向上传播到堆栈。
我正在考虑通过调用Thread#stop(Throwable) 以同样的方式杀死所有其他线程。大多数都可以突然终止,并且可以在需要关闭逻辑时捕获此异常。他们将简单地让异常向上传播堆栈,在需要的地方执行关闭逻辑,并最终最终杀死线程。这种方法有没有我遗漏的隐患?
【问题讨论】:
标签: java multithreading exception-handling