Java:Exception类是线程安全的吗?

Vil*_*tas 8 java exception thread-safety

据我所知,Java的Exception类肯定不是不可变的(类似的方法,initCausesetStackTrace提供一些线索).它至少是线程安全的吗?假设我的一个类有一个这样的字段:

private final Exception myException;
Run Code Online (Sandbox Code Playgroud)

我可以安全地将此字段暴露给多个线程吗?我不愿意讨论具体情况,以及为什么会出现这种情况.我的问题更多的是关于这个原则:我可以告诉一个暴露Exception类型字段的类是线程安全的吗?

另一个例子:

class CustomException extends Exception
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

这个类是线程安全的吗?

Mic*_*rdt 7

请注意,它initCause()synchronizedsetStackTrace()复制其参数,然后执行单个分配.

所以Exception实际上似乎是在考虑线程安全的情况下实现的.尽管如此,我还是要警惕任何在线程之间经常传递异常的设计(即除了处理非常严重的错误条件之外的任何原因).这只是感觉不对.