我一直很好奇如何抛出java.lang.InternalError或java.lang.UnknownError抛出.
我的意思并不简单
throw new InternalError();
throw new UnknownError();
Run Code Online (Sandbox Code Playgroud)
但是Java SE库或JVM本身抛出了一个(最近通常的Oracle实现).
例如,ArrayList.clone真正抛出特定代码或环境InternalError是我想要的答案.以下是其源代码.
public Object clone() {
try {
ArrayList<?> v = (ArrayList<?>) super.clone();
v.elementData = Arrays.copyOf(elementData, size);
v.modCount = 0;
return v;
} catch (CloneNotSupportedException e) {
// this shouldn't happen, since we are Cloneable
throw new InternalError(e);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想要锻炼好奇心,请转到Java Bugs数据库页面,然后使用InternalError和UnknownError作为关键字搜索错误.
这些报告几乎都是有人设法导致InternalError或UnknownError发生的错误......而不仅仅是理论上的可能性.
注意:
大多数这些错误可能都是历史性的; 即在早期版本的Java中修复.(但后来你没有明确说明你在谈论哪个版本.最近的版本?通常是谁?)
许多旧的错误似乎都被隐藏在公众视野之外.当您单击搜索结果中的链接时,它会将您带回搜索.(如果你不喜欢它,请向Oracle抱怨......不是我.)
除了报告的错误之外,如果您准备干扰Java安装(例如调整"rt.jar"文件)或在本机代码中乱七八糟,可能会有很多方法导致这些错误发生.
| 归档时间: |
|
| 查看次数: |
2590 次 |
| 最近记录: |