草庐IT

Try-catch-finally

全部标签

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 - 我如何最好地 catch Java 的最新发展?

关闭。这个问题不满足StackOverflowguidelines.它目前不接受答案。想改善这个问题吗?更新问题,使其成为on-topic对于堆栈溢出。7年前关闭。Improvethisquestion我正在申请一份Java开发人员的工作。我在2001年之前用Java编写了一些业余应用程序,之后我主要使用C++和其他语言工作。同时,感觉java成长了很多,各种缩写(EJB,spring等)我都不知道。我在哪里可以找到对最近(5年)java发展的简洁明了的解释?要理解的关键要素是什么? 最佳答案 2001年?哇,时代变了。那是什么?J

java - Finalized 拥有大量内存 4 g 中的 2.5 gig

我已经阅读了很多关于终结器如何工作的文章。这是我的理解:如果一个类实现了finalize方法,Jvm将创建一个Finalizer实例作为该对象的看门狗。当GC运行时,它会标记要处理的对象并将它们添加到引用队列中,然后终结器线程将从队列中挑选这些对象并执行它们的终结方法。我的问题是:如何从堆转储中找到因某种原因未完成finalize方法并开始堆积引用队列的对象?引用队列是否按特定顺序排列? 最佳答案 这可能不是您正在寻找的答案,但您是否考虑过使用PhantomReference而不是覆盖finalize()?这是一个article那就

java - 在ArrayBlockingQueue中,为什么将final成员字段复制到本地final变量中?

在ArrayBlockingQueue中,所有需要锁的方法在调用lock()之前将其复制到本地final变量。publicbooleanoffer(Ee){if(e==null)thrownewNullPointerException();finalReentrantLocklock=this.lock;lock.lock();try{if(count==items.length)returnfalse;else{insert(e);returntrue;}}finally{lock.unlock();}}当字段this.lock为finalthis.lock复制到局部变量lock/?

java - 对象未被终结且 Finalizer 线程未执行任何操作

在我们的服务器上,我们开始遇到OutOfMemoryError问题。我们使用EclipseMemoryAnalysis分析了堆转储,发现有许多对象被保留以进行终结(大约占堆的2/3):我们发现,它可能是一些finalize()方法阻塞。我发现了几个关于这个问题的错误报告(here或here),它总是在Finalizer线程堆栈中表现出来,它在某处被阻塞。但在我们的例子中,这个线程正在等待:"Finalizer"daemonprio=10tid=0x43e1e000nid=0x3ffinObject.wait()[0x43dfe000]java.lang.Thread.State:WAI

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 - 如果我使用多个 catch block ,为什么 java 没有检测到无法访问的 catch block ?

研究以下方法:staticprivatevoidfoo(){try{thrownewFileNotFoundException();}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}尽管最后一个catchblock实际上无法访问,但这段代码编译良好。现在让注释thrownewFileNotFoundException();行执行:糟糕!我们看到了UnreachablecatchblockforFileNotFoundException.Thisexc

java - 匿名内部类和 Final 修饰符

这个问题在这里已经有了答案:Anonymous-Innerclassesshowingincorrectmodifier(4个答案)关闭3年前。据我正确理解匿名类总是final:这在JLS15.9.5中有专门提到但是,当我运行以下代码来检查它是否显示Inner类不是final时。publicclassTest{staticclassA{}publicstaticvoidmain(Stringarg[]){Aobj=newA(){};if((obj.getClass().getModifiers()&Modifier.FINAL)!=0){System.out.println("Itis

java 。本地类(class)有什么理由不让它成为 final类吗?

我对Java中的本地类有疑问(在方法中或在{}限定的block中声明的类)。是否有任何理由不将本地类声明为final?我们不能从本地类继承其他类(如果它没有在同一范围内定义),但是当我们将其声明为final时,也许编译器可以使代码更简单?谢谢! 最佳答案 人们似乎对匿名类和本地类有点混淆。这是本地类:publicvoidm(){classMyClass{}MyClasscl=newMyClass();}您可以将MyClass声明为final,但实际上可以从它继承,因此Java中的任何其他地方都可以将其声明为final以避免这种情况: