草庐IT

try-finally

全部标签

java - 在 java 中使用 final 关键字从 int 到 byte 的类型转换问题

publicstaticvoidmain(String[]args){finalinta=15;byteb=a;System.out.println(a);System.out.println(b);}在上面的代码中,当我从int转换为byte时,它​​没有给出编译时错误,但是当我从long转换为int时,它给出了编译时错误,为什么?publicstaticvoidmain(String[]args){finallonga=15;intb=a;System.out.println(a);System.out.println(b);} 最佳答案

Java try-finally 竞争条件?

很多Java资源使用示例如下所示:Resourcer=openResource();try{//useresource}finally{r.close();}r的声明必须在try子句之外才能在finally子句中可见,但这也使得看起来可能存在竞争条件:如果在openResource()调用和进入try子句之间出现线程中断怎么办?这是否意味着资源不会在那种情况下实际上被关闭?或者Java是否保证try-finally会“完全”覆盖r,尽管语法看起来不会?或者我必须写:Resourcer=null;try{r=openResource();//useresource}finally{if(

java - 为什么在 Java 中初始化为 String.toString() 的 'final String' 不被视为常量

这个问题在这里已经有了答案:Javaswitchstatement:Constantexpressionrequired,butitISconstant(14个答案)CompileTimeConstantUsageinSwitchCaseJava(6个答案)关闭6年前。我用Java编写了以下代码,运行良好:publicclasstest{publicstaticvoidmain(String[]args){finalStrings1="s1";finalStrings2="s2";Strings="s1";switch(s){cases1:System.out.println("s1"

java - 在 try 或 catch block 上调用 return 语句或 System.exit

我在面试中被问到以下问题:WhatwillhappenifonecallsareturnstatementorSystem.exitontryorcatchblock?Willfinallyblockexecute?finallyblock是否总是被执行?编辑:在java中尝试以上操作后:finally如果我将return语句放在tryblock或catchblock中,block就会执行,但是如果我调用System.exit形式的try或catch,finallyblock不会运行。虽然我不明白背后的原因。 最佳答案 Whatwi

java - 为什么在覆盖 finalize() 方法时首选调用 super.finalize()?

我收到SonarQube错误:“强烈建议在此方法实现结束时调用super.finalize(),以防父实现也必须释放一些系统资源。”但我发现Object类没有实现finalize方法。protectedvoidfinalize()throwsThrowable{}那么为什么需要调用super.finalize()呢? 最佳答案 这不是必须的,它是应该遵循的finalizer写成语。如果在未来的任何时候,您重构了您的代码并且您的类扩展了一些可能具有finalize方法的其他类,这种做法将防止出现奇怪的错误。成语是try{//Dowha

java - Java try/catch block 中的编译类问题

我在JAVA代码中有try和catchblockimportjava.io.FileOutputStream;importjava.util.zip.ZipOutputStream;publicclassTryTest{publicstaticvoidmain(String[]args){StringzipPath="D:/test";try(ZipOutputStreamzipOut=newZipOutputStream(newFileOutputStream(zipPath))){StringHello="Hello";System.out.println("===========

java - 我的 try 语句之后的所有内容都必须包含在该 try 语句中才能访问其中的变量吗?

我正在学习java,我发现我不喜欢的一件事通常是当我有这样的代码时:importjava.util.*;importjava.io.*;publicclassGraphProblem{publicstaticvoidmain(String[]args){if(args.length我的FileReader有一个未捕获的异常。因此,我必须将其包装在try-catch中以捕获该特定异常。我的问题是try{}是否必须在我的方法中包含之后的所有内容,以便使用我的FileReader(输入)或我的Scanner(输入)?如果我没有将整个程序的其余部分包装在那个try语句中,那么它之外的任何东西都

java - try catch block 的成本是多少?

有多好:if(condition){try{//something}catch(SomeExex){}}而不是这个:try{if(condition){//something}}catch(SomeExex){}当我进入tryblock时,JVM实际上做了什么?编辑:我不想知道在第二个例子中总是进去尝试...请回答问题。 最佳答案 在运行时明智地执行,只要没有异常,尝试就不会花费你任何东西。一旦发生异常,它只会花费运行时间。在那种情况下,它比if评估要慢得多。在JVM规范中,您看到执行路径上没有生成额外的字节代码:http://do

java - Java 中的 try-catch 和循环异常

在Java中,有什么区别(在性能方面):for(inti=0;i和try{for(inti=0;i 最佳答案 在您的第一个版本中,如果遇到异常,循环会继续,在第二个版本中,循环会在catchblock之后继续。这是这些代码片段最重要的区别。 关于java-Java中的try-catch和循环异常,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6324012/

java - 为什么在没有任何异常抛出的情况下处理 try-catch 根本不会减慢程序速度?

今天我意识到一些对我来说很奇怪的事情:我注意到当我只是这样做的时候try{doSomething();}catch(Exceptione){}一点也不比我做的慢doSomething();所以我运行了一个测试并写下了一些快速代码来证明我所看到的,代码基本上只是在一个名为doSomething()的函数上循环了很多次,一次没有,一次有try-catch围绕它。所以如果你想自己测试它,这里是它的代码:publicclassMain{privatestaticfinallongLOOPS=1000000L;publicstaticfinalvoidmain(String[]args){Sys