Java 理解不支持操作异常
我不知道;我不太明白在哪里可以抛出这个异常 例如,我正在实现Java 理解不支持操作异常,java,exception,interface,Java,Exception,Interface,我不知道;我不太明白在哪里可以抛出这个异常 例如,我正在实现Future接口,不希望任何人调用该方法: 那么,我可以抛出不支持操作异常吗 public T get(long timeout, TimeUnit unit){ throw new UnsupportedOperationException(); } 问题是,该方法的规范没有说明任何关于抛出异常的内容。反过来,例外情况也是如此 抛出以指示不支持请求的操作 我的意思是,如果你不想调用它,抛出它是很常见的,还是因为不是所有的
Future
接口,不希望任何人调用该方法:
那么,我可以抛出不支持操作异常吗
public T get(long timeout, TimeUnit unit){
throw new UnsupportedOperationException();
}
问题是,该方法的规范没有说明任何关于抛出异常的内容。反过来,例外情况也是如此
抛出以指示不支持请求的操作
我的意思是,如果你不想调用它,抛出它是很常见的,还是因为不是所有的方法都实现了,所以可能会被认为是不正确的?在我的具体案例中,我认为调用该方法没有意义…当您希望方法的调用者知道该操作不受支持时,您可以抛出UnsupportedOperationException
您可以检查:
此异常扩展了RuntimeException类,因此属于
在Java操作期间可以抛出的异常
虚拟机(JVM)。这是一个未经检查的异常,因此它确实存在
不需要在方法或构造函数的抛出中声明
条款此外,自
Java的1.2版本
从技术上讲,UnsupportedOperationException是未经检查的,因此可以抛出到任何您喜欢的地方。然而,将它扔到意想不到的地方会导致您的类不太容易使用,因此不推荐使用
预期将抛出UnsupportedOperationException的位置在“可选操作”中。Java框架包含了大量的这些,特别是在Collections框架中。例如,因为不可变集合不应该允许它。抛出UnsupportedOperationException正是如果您不想编写其中一个方法时应该做的事情
在您的情况下,定时“get”对于Future的使用非常重要,如果您不实现它,您将引起一些惊讶。如果您要这样做,请确保它有良好的文档记录,并注意这将导致您的Future实现在某些情况下无法使用,并可能导致使用它的程序崩溃
如果您没有足够的资源来编写实现未来的定时GET,请考虑使用已经存在的实现,例如从未来任务扩展类。
是的,您是正确的。
UnsupportedException的作者是Joshua Bloch,根据他的书,如果对象不支持操作,该方法可以抛出UnsupportedException
在方法中引发此异常之前应注意,因为它属于RuntimeException/unchecked exception类型
这本书的作者和不受支持的异常类:约书亚·布洛赫
/**
* Thrown to indicate that the requested operation is not supported.<p>
*
* This class is a member of the
* <a href="{@docRoot}/../technotes/guides/collections/index.html">
* Java Collections Framework</a>.
*
* @author Josh Bloch
* @version %I%, %G%
* @since 1.2
*/
public class UnsupportedOperationException extends RuntimeException {
...
}
/**
*抛出以指示请求的操作不受支持。
*
*这个类是
* .
*
*@作者Josh Bloch
*@version%I%,%G%
*@自1.2
*/
公共类UnsupportedOperationException扩展了RuntimeException{
...
}
是的,您的示例是使用UnsupportedOperationException
的典型扫描。重点是让调用方知道该操作不受支持:如果有抛出的示例,我认为这取决于您自己的判断。我只想确保包含一些文档,说明抛出它的原因。很好,但我在JavaDocs中看到(不记得确切位置)不需要实现某些操作(方法)。我认为这是我们可以抛出它的唯一案例。看看JDKLet中的AbstractList
示例,我问你一些。这是来自有效的Java吗?如果是,你引用了哪一部分?是的。它来自于有效的Java书籍,也是如何使用Java语言的最佳书籍,喜欢的好部分。这是第9章的例外。