但当我忘记将语句放入try-with-resources语句时,关闭方法是不是不调用?
我在互联网上搜索了其他信息,并查看了文档。两人都建议删除throws Exception语句。但是我对这个建议的反应是,当将来我们的项目中有人实现了新的接口(毫无例外),并且忘记了将它们放入try-with-resource中时,我们就会出现资源泄漏。对于我们的项目来说,这不是一个巨大的问题,因为我们使用的是SonarQube,它会提到资源泄漏
AutoCloseable具有方法“void close throws exception”。有些人建议扩展这个接口,重写close方法并删除异常。
您发布的链接并不是建议作为一般情况,而是向您展示了为什么io
包有自己的closeable
接口,该接口仅抛出ioexception
(因为它不需要抛出更一般的exception
。)这在运行时没有任何区别,它完全就位,因此如果任何东西在使用io.closeable
接口时试图抛出不是IOException的东西,就会抛出编译器错误。
但当我忘记将语句放入try-with-resources语句时,关闭方法是不是不调用?
这里似乎暗示了一个没有的链接-autocloseable
可能抛出的异常类型实际上与它包装的资源关闭的时间无关。
在try-with-resources中,close被称为
是的,这就是语言特性的全部要点。
除非您将它包装在一个try with resources块中。
例如,离开创建资源的方法时,由java自动执行???
不,如果你忘记关闭一个资源,它就会一直打开。
我最近将Oracle JDBC驱动程序版本从11.2.0.1升级到12.1.0.1。然而,我注意到一件很奇怪的事情。在我的一个测试中,我使用Java中的以下代码关闭了ResultSet对象两次: 当我使用旧的JDBC driver 11.2.0.1时,此操作没有任何异常。但是当我切换到新的JDBC驱动程序12.1.0.1时,它抛出了一个异常: 我使用JDK7u45和java.sql.ResultS
问题内容: 是否可以自动关闭?即,代替: …我能说......么: …在Java 7中? 问题答案: 不,该接口(也不是该类)都未实现该接口,而新的try- with-resource语法必须使用该接口。 如果您想使其工作,可以编写一个简单的包装器: 现在您可以编写如下代码: 我认为您最好还是坚持使用旧语法。使锁定逻辑完全可见是更安全的。
如何从一个方法中同时抛出多个异常?示例: 编辑:一个条件同时抛出Exception1和Exception2。可能?这只是一个测试抛出异常的演示文件。
我在windows 7中安装了android Studio,但它在打开后立即关闭。我还安装了java jdk并添加了一个JDK_HOME环境变量,但android Studio会在几秒钟后自行关闭。
问题内容: 我正在使用一个API,该API声称如果成功则返回true,如果失败则返回false。但是,它也声称如果失败,则抛出不同的异常。它如何返回false并引发异常? 问题答案: 不能从单个函数调用中引发异常并返回值。 如果发生错误,它可能会执行类似返回的操作,但是如果输入无效,则会引发异常。 编辑:PaulPRO发布了一个(现已删除)答案,指出从 技术上讲, 有可能在返回当前值时在另一个线程
问题内容: 我正在实现python-rq以在队列中传递域并使用Beautiful Soup对其进行抓取。因此,我正在雇用多名工人来完成工作。到目前为止,我已经开始了22位工作人员,所有22位工作人员都在rq仪表板中注册。但是一段时间后,工作人员会自行停下来,也不会显示在仪表板上。但是在webmin中,它将所有工作程序显示为正在运行。爬行速度也降低了,即工人没有在奔跑。我尝试使用主管和nohup运行