草庐IT

Try-finally

全部标签

java - 在 finally block 中抛出异常是性能问题吗?

在RationalApplicationDeveloper(基于eclipse的RAD)中,在软件分析器下,我看到代码审查评论(在Performance=>Memory部分下)说“避免在finally中使用throw语句”。在finallyblock中定义throw如何影响性能?这是代码片段,我们已经建议更改代码以记录异常跟踪并且不要抛出异常,}finally{if(bufferedReader!=null){try{bufferedReader.close();}catch(finalIOExceptionex){throwex;}}}我只是想知道这会如何影响内存和性能?

java - jackson + Tomcat - java.lang.VerifyError : Cannot inherit from final class

我有一个在Tomcat6中运行的Java网络服务,它接受JSON输入。我正在尝试使用JacksonObjectMapper来解析输入的json。但是在初始化ObjectMapper对象时出现此错误16:08:13,616ERROR[[jersey]]Servlet.service()forservletjerseythrewexceptionjava.lang.VerifyError:Cannotinheritfromfinalclassatjava.lang.ClassLoader.defineClass1(NativeMethod)atjava.lang.ClassLoader.d

java - "finalizer guardian"在 Java 中如何工作?

“终结器监护人”[EffectiveJava,第30页]是如何工作的?你用过吗?它是否解决了任何具体问题? 最佳答案 解决了子类忘记调用父类(superclass)的finalize方法的问题。此模式的工作原理是将一个带有覆盖的finalize的额外实例附加到您的父类(superclass)。这样,如果父类(superclass)超出范围,附加实例也会超出范围,这将触发其finalize的执行,这将依次调用finalize封闭类。这是一个展示监护人模式的简短片段:publicclassParent{publicstaticvoidm

java - Try/Try-with-resources 和 Connection、Statement 和 ResultSet 关闭

我最近和我的教授讨论了如何处理基本的jdbc连接方案。假设我们要执行两个查询,这就是他提出的publicvoiddoQueries()throwsMyException{Connectioncon=null;try{con=DriverManager.getConnection(dataSource);PreparedStatements1=con.prepareStatement(updateSqlQuery);PreparedStatements2=con.prepareStatement(selectSqlQuery);//SettheparametersofthePrepare

java - 如何修复 proguard 警告 'can' t 为 java.lang.Object 类的现有方法 'clone' 和 'finalize' 找到引用的方法

我尝试压缩一个使用ical4j.jar的android应用程序。当我使用gradleproguardDebug使用proguard构建apk时,我得到了警告:net.fortuna.ical4j.model.CalendarFactory:在库类java.lang.Object中找不到引用的方法“voidfinalize()”6个针对finalize()的额外类似警告警告:net.fortuna.ical4j.model.CalendarFactory:在库类java.lang.Object中找不到引用的方法“java.lang.Objectclone()”6个针对clone()的其他

java - case 表达式必须是 static final int 的常量表达式?

我有一个finalclassRing定义为:finalclassRing{publicstaticfinalintOUT=3;publicstaticfinalintMID=2;publicstaticfinalintIN=1;}我还有一个publicclassMorrisBoard,代码如下:publicclassMorrisBoard{publicstaticfinalRingRING=newRing();privatebooleancheckMillBy(intring,intx,inty){switch(ring){caseMorrisBoard.RING.OUT://...c

java - Try-with-resources 资源范围

在Java7的try-with-resources构造中,我可以在try语句,超出作用域会自动关闭。但是,我没有发现任何关于可用的资源范围的迹象。具体来说,它是否在声明它的tryblock的catch/finallyblock中可用?我在EclipseKepler中尝试了以下操作,但它给人的印象很复杂:资源变量由ContentAssist(代码完成)提供:QuickFix建议更改为资源变量,但这会递归地产生它试图修复的相同问题:在EclipseBugTracker中提出错误之前,我想知道正确的范围限制是什么。 最佳答案 这种语法称为

Java在try-catch-finally机制中的返回值

我刚遇到下面这段代码:publicclassTestFinally{publicstaticvoidmain(String[]args){intreturnValue=function();System.out.println("Returnvalue:"+returnValue);}publicstaticintfunction(){try{return1;}catch(Exceptione){return2;}finally{return3;}}}毫无疑问,运行此代码将产生“返回值:3”的输出。但是,我很好奇:JVM的内部机制。有谁知道虚拟机是否真的通过覆盖第一个“return1”

java - 在try\finally block中有没有finally不执行的情况?

我正在为面向对象编程的测试学习,我想知道考虑以下代码是否存在任何情况:try{dosomething}catch(someExceptione){}finally{dosomething}finallyblock不会执行? 最佳答案 是的。如果您使JavaVM崩溃或通过native代码搞砸,导致程序终止,或在tryblock内无限循环/等待。只有这三种情况可以避免执行finallyblock。 关于java-在try\finallyblock中有没有finally不执行的情况?,我们在S

java - 枚举中的静态 final方法

所以我环顾了谷歌和SO,我找不到示例或解释:Whatisthepurposeofstaticfinalmethodsinenum?我的理解:声明static的方法可以像函数/过程语言一样访问。final意味着您不能覆盖它。无法更改引用。正如assylias在评论中指出的那样static也不能被覆盖。enum不能被子类化,已解释here.那么staticfinal方法在enum中的意义是什么,如果它永远不会被覆盖,因为那里不会是一个子类? 最佳答案 通过使静态方法成为final方法,youpreventitfrombeinghidde