草庐IT

Try-finally

全部标签

java - 使用 try-catch-finally 的 Java 7 try-with-resources 字节码是什么?

我试图了解新的try-with-resourcesstatement通过使用常规的try-catch-finally语句重新创建它来工作。给定以下使用Java7try-with-resources的测试类:importjava.io.IOException;importjava.util.zip.GZIPOutputStream;publicclassTryWithResources{publicstaticvoidmain(String[]args){try(GZIPOutputStreamgzip=newGZIPOutputStream(System.out)){gzip.writ

java - 带有 InputMismatchException 的 try/catch 创建无限循环

所以我正在构建一个从用户输入中获取整数的程序。我有一个看起来非常简单的try/catchblock,如果用户没有输入int,应该重复该block直到他们输入。这是代码的相关部分:importjava.util.InputMismatchException;importjava.util.Scanner;publicclassExcept{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);booleanbError=true;intn1=0,n2=0,nQuotient=0;do{try{Syste

java - 不能使用 try/catch block 处理 java 未经检查的异常吗?

在教程中我发现您的代码无法处理未经检查的异常,即我们不能使用try/catchblock和示例是ArrayIndexOutOfBoundsException,NullPointerException.之类的异常(exception)情况但是这些异常可以使用try/catchblock来处理。我想我不清楚这个概念!我还认为throw关键字只能与try/catch一起使用block.canthrow关键字与UncheckedException一起使用? 最佳答案 已检查异常和未检查异常之间的唯一区别是已检查异常必须使用throws在方法

java - JVM如何保证finally block 的执行?

这个问题的目的是JVM如何能够保证finallyblock的执行(前提是JVM没有崩溃并且线程没有中断或退出)。在一个面试问题的提示下,我试图了解JVM如何确保即使在奇怪的情况下也能执行finallyblock......请考虑以下代码:try{int[]someArray=newint[10];intinvalid=someArray[10];}catch(IndexOutOfBoundsExceptione){thrownewRuntimeException("OtherException");}finally{//closeopenfilesorHTTPconnectionset

java - 声明变量 final 和 static

此评论是在代码审查中发表的,发表评论的人已不在我们的团队中。Anytypethatmustberesolvedbytheclassloaderatruntimeshouldneverhaveinstanceswhichareheldbyreferencesdeclaredtobebothfinalandstatic.这是代码行:privatefinalstaticLoggerlog=LoggerFactory.getLogger(MyClass.class);我对声明记录器静态或非静态的争论很熟悉,但这个评论似乎更笼统。我找不到任何关于为什么static和final不好的解释。谁能详细

java - 什么是先到的 - finally 还是 catch block ?

考虑以下测试用例:publicclassMain{staticinta=0;publicstaticvoidmain(String[]args){try{test();System.out.println("---");test2();}catch(Exceptione){System.out.println(a+":outercatch");a++;}}publicstaticvoidtest(){try{thrownewException();}catch(Exceptione){System.out.println(a+":innercatch");a++;}finally{Sy

java - 在 Java 中,是否保证调用 "finally" block (在 main 方法中)?

我是Java菜鸟,我想知道是否有以下典型的Java代码publicclassMyApp{publicstaticvoidmain(String[]args){try{//dostuff}catch{//handleerrors}finally{//cleanupconnectionsetc.}}}JVM是否保证finallyblock将始终运行?为了理解我从哪里来,我已经习惯了C/C++程序,如果你取消引用一个NULL指针并且你不能在此之后运行任何代码,那么这些程序可能会崩溃。但据我了解Java和整个GC/托管内存业务,没有空指针取消引用之类的东西,一切都是可捕获的预期,因此我的程序实

java - 如何测试实用程序项目的 final方法和静态方法?

我正在尝试为一个项目实现单元测试,它使用一个遗留的“实用程序”项目,其中散布着静态方法,并且许多类是最终的,或者它们的方法是最终的。我根本无法更新旧项目。JMock和EasyMock都对final方法感到窒息,而且我看不到测试静态调用的好方法。有什么技术可以测试这些? 最佳答案 如果您能够重构代码,则可以将您对最终/静态方法的调用包装在简单的实例方法中,例如:protectedFoodoBar(Stringname){returnUtility.doBar(name);}这允许您在单元测试中覆盖包装器方法以返回Foo的模拟实例。您也

java - 有什么理由在 LogBack Logger 上使用 private 而不是 private final static?

在SpringController中实例化Logger时,是否有任何理由将其声明为staticfinal?Logger不在MyController.class之外使用。我已经看到这两个例子都在使用,但不明白为什么我应该使用其中一个。privateLoggerlogger=LoggerFactory.getLogger(MyController.class);对privatestaticfinalLoggerlogger=LoggerFactory.getLogger(MyController.class); 最佳答案 我个人使用pr

java - 带返回值的 try{} finally{} 构造

这个问题在这里已经有了答案:Javatry-finallyreturndesignquestion(7个回答)DoesafinallyblockalwaysgetexecutedinJava?(51个回答)关闭7年前。我想知道为什么Java编译器会接受以下代码:publicclassMain{publicstaticvoidmain(String...args){System.out.println("a()="+a());}publicstaticStringa(){try{return"a";}catch(Throwablet){}finally{return"b";}}}这可以而