草庐IT

Try-Finally

全部标签

java - 我们如何将 try finally 用于 Lock.lock 和 Lock.unlock

考虑以下代码。为了防止IndexOutOfBoundsException打电话时listIterator,我们使用读取器锁来检索基于索引的iteartor,并在对stockCodes进行写操作时使用写入器锁.请注意,我们没有使用任何锁定机制来使用listIterator进行迭代,因为它来自CopyOnWriteArrayList.不需要锁定,因为ConcurrentModificationException不应被抛出。//stockCodesReaderLockisreaderlockfromjava.util.concurrent.locks.ReadWriteLock//stock

java - 强制 try block 在两者之间中断的最佳方法是什么?

我有一个try-catchblock,我希望像switchblock一样break但我做不到找到推荐的方法。我在try-catchblock中获取大量数据,并希望在满足特定条件的情况下停止获取。只是为了让它现在工作,我故意强制代码进入catchblock:inti=0;try{//--dostuff----if(//-------isconditionmet?--------//)i=1/0;//divide1by0--adefiniteexception}catch(Exceptione){//---------donothing---------//}这样做安全还是我应该换一种方式

java - 如果构造函数抛出异常,是否不调用 try-with-resources 习惯用法的 close 方法?

我有一个基类Base和一个扩展它的子类Child。Base实现了java.lang.AutoCloseable。假设Child的构造函数抛出一个Foo。现在考虑try(Basec=newChild()){/*Somecode*/}catch(finalFooe){/*Somemorecode*/}如果抛出异常,是否调用Base#close方法?它不在我的机器上,但这是JLS标准化的东西吗? 最佳答案 是的,close不会被调用。这在JLSsection14.20.3中指定:Resourcesareinitializedinleft-

java - 在 try-with-resource 中手动关闭

假设我使用的是一个文档不完整的第三方库,没有可用的源代码。该库的一种方法接受InputStream来加载各种数据。由于缺少文档,不清楚该方法是否在完成处理后关闭流,因此一种可能的解决方案可能是将调用包装在try-with-resource中,只是为了在安全的一面。不幸的是,Java规范(据我所知)没有提及如果在try-with-resource中手动关闭资源会发生什么。有人碰巧知道吗? 最佳答案 这将完全取决于资源本身的实现。try-with-resource语句是用于在finallyblock中调用close()(并保留异常等)的

java - 在 finally block 中设置 reference = null?

我的一位同事在finallyblock中设置了对null的引用。我认为这是无稽之谈。publicSomethinggetSomething(){JDBCConnectionjdbc=null;try{jdbc=JDBCManager.getConnection(JDBCTypes.MYSQL);...}finally{JDBCManager.free(jdbc);jdbc=null;//你怎么看? 最佳答案 你是对的,jdbc是一个局部变量,所以当getSomething()方法返回时jdbc将超出范围并符合条件垃圾收集实际上与将其

java - 避免使用 try-catch 语句的充分理由

示例#1:try{fileChooser.setSelectedFile(newFile(filename));}catch(NullPointerExceptione){/*donothing*/}示例#2:if(filename!=null)fileChooser.setSelectedFile(newFile(filename));#1是出于性能或稳定性(或任何其他原因)本身就不好,还是只是有点不同?这不是一个很好的例子,因为#1与#2相比没有优势,但在不同的情况下可能会有优势(例如提高可读性、减少代码行等)。编辑:共识似乎是#1是一个禁忌。最常见的原因:开销另外,@RaphLe

java - 在 try catch 中访问变量

我一直在returnmenuFont行收到编译错误,它说没有变量menuFont。有人可以告诉我如何解决这个问题。importjava.awt.Font;importjava.awt.FontFormatException;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;publicclassloadFiles{FontgetFont(){try{FontmenuFont=Font.createFont(Font.TRUETYPE_FONT,newFi

java - try block 内语句的 Netbeans 声明性提示语法

我想检查并转换一个特定的语句为try-with-ressources形式。但我感觉declarativehintsformat的语法为此我避而不谈。我试过:try{$before$;someMethod($arg1,$arg2,$arg3);$after$;}catch$catches$=>try(Resourceres=acquire($arg1,$arg2,$arg3)){$before$;res.use();$after$;}catch$catches$但应用到我的代码中时,模式永远不会匹配。这是我希望匹配的一些示例代码部分:publicbooleanstep(Stringinp

java - 为什么 javac 不优化空的 try-finally block ?

我写了一个类classtest1{voidfoo(){}}还有一个有很多try和finally语句什么都不做的类:classtest2{voidfoo(){try{}finally{}try{}finally{}try{}finally{}try{}finally{}try{}finally{}}}使用javac(sun-jdk-1.6.0.37,linux-3.8.13-amd64)编译它们并与od比较文件。test1.class000000006614307154102016306256407216302006100517307301200000200645570201440675

java - 捕获异常的数量是否会影响 try-code 的性能?

我经常读到,与普通代码相比,使用try-catch非常慢。现在我想知道捕获异常的数量是否会影响代码的性能。也是try{...}catch(StrangeExceptione){...}慢于try{...}catch(StrangeExceptione){...}catch(MysteriousExceptione){...}catch(FrighteningExceptione){...}?当然我只是指try-clause中的代码,如果没有异常被捕获。 最佳答案 你读到的是错误的。当真正抛出异常时会产生大量开销——通常在没有异常时开