Java中只读的泛型异常

Java中只读的泛型异常,java,exception-handling,Java,Exception Handling,Java默认包中是否存在表示只读异常情况的未经检查的通用异常?如果不是,最好的例外情况是什么 我的问题是:我使用的API中的方法声明了自定义检查的ReadOnlyException。我想通过重新抛出它来处理这个问题,如果发生这种情况,这是一个编码错误,如果它正确地包装在一些未检查的RuntimeException类型中,我的代码应该保证不会发生这种错误。我不想为此编写另一个异常类 Java代码中是否有各种异常的良好来源,在哪些情况下可以使用它们,就像我经常遇到的难题一样——编写自定义异常还是使用

Java默认包中是否存在表示只读异常情况的未经检查的通用异常?如果不是,最好的例外情况是什么

我的问题是:我使用的API中的方法声明了自定义检查的ReadOnlyException。我想通过重新抛出它来处理这个问题,如果发生这种情况,这是一个编码错误,如果它正确地包装在一些未检查的RuntimeException类型中,我的代码应该保证不会发生这种错误。我不想为此编写另一个异常类

Java代码中是否有各种异常的良好来源,在哪些情况下可以使用它们,就像我经常遇到的难题一样——编写自定义异常还是使用现有异常?

如果数据是真正的只读数据,我认为这是最合适的

如果数据可以从可写转换为只读,则为IllegalStateException。
如果初始化阶段没有逃逸初始化代码,则初始化阶段不起作用。

如果调用方可以处理此异常,则可以盲目地重新引发异常

// throw a checked exception without the compiler knowing. 
Thread.currentThread().stop(checkedException);

这仍然允许嵌套调用方捕获原始异常,但不必一直声明已检查的异常。

这里有一个非常好的Java异常列表。多年来,我一直把这个页面作为参考


也许一种新的方法对你有用

好吧,无论如何,你都不会捕获异常,所以我只会抛出RuntimeException或IllegalStateException,可能是IllegalArgumentException,但我想它在这里不太合适,有一条清晰的异常消息。看看Collections.unmodifyableXXXX类,他们在修改时抛出未经检查的异常。Java异常的优秀列表。在执行未经检查的重新抛出时,我通常使用RuntimeException,但我的老板不喜欢:我无法决定是IllegalStateException、UnsportedOperationException还是IllegalStateAccess。@OldCurmudgeon就是这样。问题是,您无法知道在另一个线程中触发停止的位置或它可能处于什么状态。如果停止当前线程,这与重新抛出异常是一样的。thread.stop自Java 1.2以来就被声明为本质上不安全的,并且不应该建议出现罕见异常的任何地方,但这个问题不属于任何异常类别。此外,产生的ThreadDeath异常不满足对只读数据进行写入尝试的标准异常要求。@usr local-ΕψΗ∧ΝFINALLY!!实际上有人检查了链接一个有趣的无答案,但不幸的是,一个无答案。