有人告诉我,使用Java的try-catch机制会产生一些开销。因此,虽然有必要将抛出已检查异常的方法放在tryblock中以处理可能的异常,但从性能角度来看,最好将tryblock的大小限制为仅包含可能抛出异常的那些操作。我不太确定这是一个合理的结论。考虑以下两个处理指定文本文件的函数的实现。即使第一个确实会产生一些不必要的开销,我发现它更容易理解。仅通过查看语句就不太清楚异常究竟来自何处,但评论清楚地表明了哪些语句是负责任的。第二个比第一个更长更复杂。特别是,第一个很好的读行习惯必须被破坏以使readLine调用适合tryblock。在定义中可能引发多个异常的函数中处理异常的最佳做
这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:DoesuseoffinalkeywordinJavaimprovetheperformance?final修饰符有differentconsequences在java中取决于你应用它。我想知道的是,如果另外它可能会帮助编译器创建更高效的字节码。我想这个问题深入到JVM是如何工作的,并且可能是JVM特定的。那么,根据您的专业知识,以下任何一项对编译器有帮助吗,还是仅出于正常的java原因使用它们?期末课final方法最终字段final方法参数谢谢!编辑:感谢您的所有回答!请注意,正如@Zohaib建议的那
这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:IsitpossibletodetectifanexceptionoccurredbeforeIenteredafinallyblock?我有一个工作流方法,它会在发生错误时抛出异常。我想将报告指标添加到我的工作流程中。在下面的finallyblock中,有什么方法可以判断try/catchblock中的方法之一是否引发了异常?我可以添加自己的catch/throw代码,但更喜欢更简洁的解决方案,因为这是我在整个项目中重复使用的模式。@OverridepublicvoidworkflowExecutor()t
我对try-with-resources有疑问,我只是想确定一下。如果我需要对异常使用react,并且我仍然需要catchblock中的资源,我可以使用它吗?给出的例子是这样的:try(java.sql.Connectioncon=createConnection()){con.setAutoCommit(false);Statementstm=con.createStatement();stm.execute(someQuery);//causesSQLException}catch(SQLExceptionex){con.rollback();//dootherstuff}我担心在
例如:try{SomeObjectsomeObject=newSomeObject();someObject.dangerousMethod();}catch(Exceptione){}someObject.anotherMethod();//can'taccesssomeObject!但是你可以在try/catchblock之前声明它,然后它就可以正常工作了:SomeObjectsomeObject;try{someObject=newSomeObject();someObject.dangerousMethod();}catch(Exceptione){}someObject.an
我见过很多人写的代码publicstaticfinalStringmystring=...然后只使用一个值。为什么他们必须这样做?为什么他们必须在使用之前将值初始化为final?更新好的,谢谢大家的回答,我理解这些键的含义(publicstaticfinal)。我不明白的是为什么人们会使用它,即使常量只会在一个地方并且只在同一个类中使用。为什么要宣布它?为什么我们不只使用变量? 最佳答案 final表示变量的值不会改变——也就是说,一个constant,它的值在声明之后就不能被修改。当你想创建一个String时使用publicfin
是否有一种不那么丑陋的方式来处理close()异常以关闭两个流然后:InputStreamin=newFileInputStream(inputFileName);OutputStreamout=newFileOutputStream(outputFileName);try{copy(in,out);}finally{try{in.close();}catch(Exceptione){try{//eventifin.closefails,needtoclosetheoutout.close();}catch(Exceptione2){}throwe;//andthrowthe'in'e
我是Maven新手..我正在尝试为springMVC+Hiberante创建maven项目,但我遇到了很多错误..任何人都可以解决我的问题,请检查我的pom.xml以获取以下信息4.0.0Spring3HibernateMavenSpring3HibernateMavenwar0.0.1-SNAPSHOTmaven-compiler-plugin2.3.21.51.5maven-war-plugin2.0-->javax.servletservlet-api2.5org.springframeworkspring-beans${org.springframework.version}o
鉴于此代码:Stringtest(){try{return"1";}finally{return"2";}}语言规范是否定义了调用test()的返回值?换句话说:在每个JVM中它总是相同的吗?在SunJVM中,返回值为2,但我想确定,这与VM无关。 最佳答案 是的,languagespec定义“2”是结果。如果VM的做法有所不同,则说明它不符合规范。大多数编译器都会提示它。例如Eclipse会声称返回block永远不会被执行,但这是错误的。编写这样的代码是非常糟糕的做法,永远不要这样做:)
我正在尝试使用JDK7的“try-catchwithresources”语句;IntelliJ突出显示我的资源行,说Try-with-resourcesarenotsupportedatthislanguagelevel.当我尝试编译时,我得到:java:try-with-resourcesisnotsupportedin-source1.6(use-source7orhighertoenabletry-with-resources)我检查了我当前的项目是否启用了try-with-resources,并且我的项目正在使用JDK7(库:C:\ProgramFiles\Java\jdk1.