草庐IT

try-except-block

全部标签

java - `try/catch`具体是怎么工作的

我想深入了解try{}catch{}block和堆栈跟踪是如何工作的。我正在阅读thisgreatarticleaboutexceptionhandlinganti-patterns并找到以下段落:catch(NoSuchMethodExceptione){thrownewMyServiceException("Blah:"+e.getMessage());}Thisdestroysthestacktraceoftheoriginalexception,andisalwayswrong.在那之后我意识到我并不真的知道try/catch是如何工作的。我的理解如下。考虑这个例子:voidt

java - 使用多个 getter 时使用 Try-Catch 而不是空检查

我的问题如下,我有一个很长的Getter,即,objectA.getObjectB().getObjectC().getObjectD().getObjectE().getName();由于“糟糕的”数据库/实体设计(有些东西比其他东西引入得晚),发生了getObjectB()、getObjectC()或getObjectD()可以返回NULL。通常我们一直使用空检查,但在这种情况下,我必须使用ObjectBb=objectA.getObjectB();if(b!=null){ObjectCc=b.getObjectC();if(c!=null){ObjectDd=c.getObjec

java - Junit4 : expected=Exception not working with SPRING

我正在尝试使用@Test(expected=RuntimeException.class)注释为了测试预期的异常。我的代码如下:@Test(expected=RuntimeException.class)publicvoidtestSaveThrowsRuntimeException(){Useruser=domain.save(null);}我的保存方法像这样简单:publicUsersave(UsernewUser){if(newUser==null){thrownewRuntimeException();}//savingcodegoeshere}调试代码后,我发现代码按预期抛出

java - 在 try block 中分配最终变量

非常简短的问题:有没有更优雅的方法来做到这一点:Objecttmp;try{tmp=somethingThatCanFail();}catch(Failf){tmp=null;}finalObjectmyObject=tmp;//nowIhaveafinalmyObject,whichcanbeusedinanonymousclasses 最佳答案 您可以在其自己的方法中提取值的创建:finalObjectmyObject=getObjectOrNull();publicObjectgetObjectOrNull(){try{ret

java - 为什么? "Always declare user defined exceptions as final"

我使用Java源代码分析器分析了我正在处理的代码。其中一条警告是“始终将用户定义的异常声明为最终异常”。还有许多其他没有多大意义的警告,但这个警告让我有点困惑。我正在开发一个框架,我有一个根通用异常(比如FrameworkGenericException),对于其他异常,我只是从根异常中派生它们。所以我有一个框架的异常层次结构。我可能会扩展层次结构,但我认为这个警告告诉我不要有这样的层次结构,而是单独定义它们。那么我应该走哪条路,你有什么意见? 最佳答案 这可能是他们的标准做法:如果类不应该被继承,则将类声明为final,而且他们可

java - Java Try/Catch block 的基准测试

我知道在执行程序时进入catchblock会产生一些显着的成本,但是,我想知道进入try{}block是否也有任何影响,所以我开始在谷歌中寻找答案,有很多意见,但是根本没有基准测试。我找到的一些答案是:Javatry/catchperformance,isitrecommendedtokeepwhatisinsidethetryclausetoaminimum?TryCatchPerformanceJavaJavatrycatchblocks但是他们没有用事实回答我的问题,所以我决定自己试试。这就是我所做的。我有一个这种格式的csv文件:host;ip;number;date;stat

Java空 block 作用域

我想知道使用空block的目的是什么。例如,static{intx=5;}publicstaticvoidmain(String[]args){inti=10;{intj=0;System.out.println(x);//compilererror:can'tfindx??why??System.out.println(i);//thisisfine}System.out.println(j);//compilererror:can'tfindj}谁能解释一下在什么情况下我们希望使用空block。那个空block中的所有变量是否仍在stack中?为什么它不能访问静态变量x?

1 个 block (16 字节)的 Java AES-128 加密返回 2 个 block (32 字节)作为输出

我使用以下代码进行AES-128加密来编码一个16字节的block,但编码值的长度给出了2个32字节的block。我错过了什么吗?plainEnc=AES.encrypt("thisisapassword!");importjava.security.*;importjava.security.spec.InvalidKeySpecException;importjavax.crypto.*;importsun.misc.*;publicclassAES{privatestaticfinalStringALGO="AES";privatestaticfinalbyte[]keyValu

java - 错误 : ORA-02289: sequence does not exist - org. hibernate.exception.SQLGrammarException:无法提取 ResultSet

我正在为员工表创建一个基本的hibernate应用程序,我在ManageEmployee类的帮助下添加、更新、删除和显示记录。实际上,ManageEmployee是我的测试类,我正在使用Employee.java和Employee.hbm.xml文件来执行上述操作。详细信息:数据库:Oracle11ghibernate版本:hibernate-release-4.3.8.FinalJava版本:Java1.8员工表详细信息:USER_IDNUMBER(15,0)否11FIRST_NAMEVARCHAR2(20BYTE)是2LAST_NAMEVARCHAR2(20BYTE)是3薪水数字(

java - 启动 Java 应用程序时出现错误 : Exception thrown by the agent : java. lang.NullPointerException

我正在使用以下命令行参数启动Java应用程序:java-Dcom.sun.management.jmxremote.port=12312\-Dcom.sun.management.jmxremote.rmi.port=12313\-Dcom.sun.management.jmxremote.authenticate=false\Main我的程序立即退出并出现以下错误:Error:Exceptionthrownbytheagent:java.lang.NullPointerException我在Windows7上使用Java8update45:javaversion"1.8.0_45"J