Tag: throw

方法签名中的抛出与Java中的抛出语句之间的区别

我试图弄清楚方法签名中的Throws和Java中的Throw Statements之间的区别。 方法签名中的抛出如下: public void aMethod() throws IOException{ FileReader f = new FileReader(“notExist.txt”); } 抛出语句如下: public void bMethod() { throw new IOException(); } 根据我的理解,方法签名中的throws是该方法可能抛出此类exception的通知。 throw语句是根据具体情况实际抛出创建对象的内容。 从这个意义上讲,如果方法中存在throw语句,则应始终显示方法签名中的throws 。 但是,以下代码似乎没有这样做。 代码来自库。 我的问题是它为什么会发生? 我理解错误的概念吗? 这段代码是java.util.linkedList的副本。 @author Josh Bloch /** * Returns the first element in this list. * * @return the first element in this list * @throws […]

为什么在这种情况下允许抛出检查的exception类型?

我偶然注意到这个throw语句(从一些更复杂的代码中提取)编译: void foo() { try { } catch (Throwable t) { throw t; } } 对于一个短暂但快乐的时刻,我认为已经检查过的exception最终决定已经死了,但它仍然很高兴: void foo() { try { } catch (Throwable t) { Throwable t1 = t; throw t1; } } try块不必为空; 它似乎可以有代码,只要该代码不会抛出一个已检查的exception。 这似乎是合理的,但我的问题是,语言规范中的哪些规则描述了这种行为? 据我所知 , §14.18town语句明确禁止它,因为t表达式的类型是一个经过检查的exception,并且它没有被捕获或声明被抛出。 (?)

Java中抛出和抛出的区别?

任何人都能用一个例子清楚地说明Javaexception处理中throw和throws之间的区别吗? 我试过谷歌搜索但无法得出结论。 请帮忙