草庐IT

Try-finally

全部标签

java - 测试 final 字段的初始化安全性

我正在尝试简单地测试JLS所保证的最终字段的初始化安全性。这是为了我正在写的一篇论文。但是,根据我当前的代码,我无法让它“失败”。谁能告诉我我做错了什么,或者如果这只是我必须一遍又一遍地运行然后看到一些不幸的时机失败?这是我的代码:publicclassTestClass{finalintx;inty;staticTestClassf;publicTestClass(){x=3;y=4;}staticvoidwriter(){TestClass.f=newTestClass();}staticvoidreader(){if(TestClass.f!=null){inti=TestCla

try catch 嵌套

实践测试在单元测试中写入以下方法:testMain()主方法,out()里面嵌套了两层trycatch异常代码写在内层try中示例一:@TestpublicvoidtestMain(){out();log.info("后续处理业务");}publicvoidout(){//外层trytry{System.out.println("外层输出");//内层trytry{inti=2/0;//异常代码}catch(Exceptione){log.error("内层异常",e);}}catch(Exceptione){log.error("外层异常",e);}}日志信息:外层输出20:38:27.17

java try finally 阻止关闭流

我想在finallyblock中关闭我的流,但它会抛出一个IOException所以我似乎必须在我的finally中嵌套另一个tryblockblock以关闭流。这是正确的方法吗?好像有点笨重。代码如下:publicvoidread(){try{r=newBufferedReader(newInputStreamReader(address.openStream()));StringinLine;while((inLine=r.readLine())!=null){System.out.println(inLine);}}catch(IOExceptionreadException){

java try finally 阻止关闭流

我想在finallyblock中关闭我的流,但它会抛出一个IOException所以我似乎必须在我的finally中嵌套另一个tryblockblock以关闭流。这是正确的方法吗?好像有点笨重。代码如下:publicvoidread(){try{r=newBufferedReader(newInputStreamReader(address.openStream()));StringinLine;while((inLine=r.readLine())!=null){System.out.println(inLine);}}catch(IOExceptionreadException){

java - 在什么情况下 finally {} block 不会执行?

在Javatry{}...catch{}...finally{}block中,finally{}中的代码通常被认为是“保证”无论try/catch中发生什么,都运行。但是,我知道它至少不会执行的两种情况:如果System.exit(0)被调用;或者,如果异常一直抛出到JVM并且发生默认行为(即,printStackTrace()并退出)是否有任何其他程序行为会阻止finally{}block中的代码执行?代码会在什么特定条件下执行?编辑:正如NullUserException所指出的,第二种情况实际上是不正确的。我认为这是因为标准错误中的文本在标准输出之后打印,防止在不向上滚动的情况下

java - 在什么情况下 finally {} block 不会执行?

在Javatry{}...catch{}...finally{}block中,finally{}中的代码通常被认为是“保证”无论try/catch中发生什么,都运行。但是,我知道它至少不会执行的两种情况:如果System.exit(0)被调用;或者,如果异常一直抛出到JVM并且发生默认行为(即,printStackTrace()并退出)是否有任何其他程序行为会阻止finally{}block中的代码执行?代码会在什么特定条件下执行?编辑:正如NullUserException所指出的,第二种情况实际上是不正确的。我认为这是因为标准错误中的文本在标准输出之后打印,防止在不向上滚动的情况下

java - 资源是在 finally 之前还是之后关闭?

在Java7的try-with-resources中,我不知道finallyblock和自动关闭发生的顺序。顺序是什么?BaseResourceb=newBaseResource();//notauto-closeable;mustbestop'edtry(AdvancedResourcea=newAdvancedResource(b)){}finally{b.stop();//willthishappenbeforeoraftera.close()?} 最佳答案 资源在catch或finally阻塞之前关闭。看到这个tutoria

java - 资源是在 finally 之前还是之后关闭?

在Java7的try-with-resources中,我不知道finallyblock和自动关闭发生的顺序。顺序是什么?BaseResourceb=newBaseResource();//notauto-closeable;mustbestop'edtry(AdvancedResourcea=newAdvancedResource(b)){}finally{b.stop();//willthishappenbeforeoraftera.close()?} 最佳答案 资源在catch或finally阻塞之前关闭。看到这个tutoria

java - java中的try/catch vs null检查

有时我面临我必须写一段这样的代码(通常它有更多的嵌套if和更复杂的结构,但示例就足够了)publicvoidprintIt(Object1a){if(a!=null){SubObjectb=a.getB();if(b!=null){SubObject2c=b.getC();if(c!=null){c.print();}}}}当我不需要知道什么失败了,如果某些东西是null什么都不做,那么一种方法可能是publicvoidprintIt(Object1a){try{a.getB().getC().print();}catch(NullPointerExceptione){}}第二种形式是

java - java中的try/catch vs null检查

有时我面临我必须写一段这样的代码(通常它有更多的嵌套if和更复杂的结构,但示例就足够了)publicvoidprintIt(Object1a){if(a!=null){SubObjectb=a.getB();if(b!=null){SubObject2c=b.getC();if(c!=null){c.print();}}}}当我不需要知道什么失败了,如果某些东西是null什么都不做,那么一种方法可能是publicvoidprintIt(Object1a){try{a.getB().getC().print();}catch(NullPointerExceptione){}}第二种形式是