草庐IT

Try-Catch-Continue

全部标签

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 - 在 try block 中分配最终变量

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

java - Guava 事件总线 : don't catch RuntimeException

我使用guava的EventBus,不幸的是它捕获并记录了事件处理程序抛出RuntimeException时发生的InvocationTargetException。我可以禁用此行为吗? 最佳答案 就目前而言,这是一个深思熟虑的决定,并在EventBus文档中进行了讨论:Handlersshouldnot,ingeneral,throw.Iftheydo,theEventBuswillcatchandlogtheexception.Thisisrarelytherightsolutionforerrorhandlingandshou

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

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

java - 当 99% 的时间对象不为空时,空检查与 try/catch

通常我更喜欢空检查。但在当前情况下,我知道大多数情况下我的if条件都会通过,并且很少有对象可能为null的合法情况。此外,负载很大(大约500万次调用/小时)现在我试图从性能角度找出哪种方法更好。已查try/catchvsnullcheckinjava但我的情况很独特。还检查了Whichisfaster,trycatchorif-elseinjava(WRTperformance)但是这一个和上面的都在通用的上下文中,在这些上下文中,通过/失败比率的知识是不可用的。publicvoidprocess(Jobjob){//...somecodewhichprocessesjobSubJo

java - try-with-resources 在哪里用 InputStreamReader 包装流?

我可能想多了,但我只是写了代码:try(InputStreamin=ModelCodeGenerator.class.getClassLoader().getResourceAsStream("/model.java.txt")){modelTemplate=newSimpleTemplate(CharStreams.toString(newInputStreamReader(in,"ascii")));}这意味着InputStreamReader永远不会关闭(但在这种情况下我们知道它的关闭方法只是关闭底层的InputStream。)可以这样写:try(InputStreamReade

java - try/catch 捕获异常后继续执行循环

一旦在此代码中捕获到异常,menuSystem方法就会运行,但是一旦我输入数字,程序就会关闭并显示“构建成功”消息。一旦发生异常,有没有办法回到while循环?publicstaticvoidmain(String[]args){finalUnitResultsmyUnit=newUnitResults(10,"Java");intoption=menuSystem();try{while(option!=0){finalScannerkeyb=newScanner(System.in);System.out.println("");switch(option){}}}catch(Ex

Java-TestNG : Why does my Assertion always passes when written within try-catch block

我正在尝试使用org.testng.Assert的简单代码来断言2个用例。在第一个用例中,我断言了2个不相等的值,它们Fail正确。但是在第二个用例中,当我在try-catchblock中断言2个不相等的值时,结果总是返回为Pass我的代码如下:packagedemo;importorg.testng.Assert;importorg.testng.annotations.Test;publicclassQ43710035{@Testpublicvoidtest1(){System.out.println("Withintest1");inta=12;intb=20;Assert.as

java - 在 try block 中捕获的未经检查的异常不是 Java 中的已检查异常吗?

有人告诉我,在Java中,uncheckedexception可以在tryblock中捕获,但是如果捕获到了,那不就叫checkedexception吗? 最佳答案 未经检查的异常是不需要在try-catchblock中捕获的异常。未经检查的异常是RuntimeException的子类或Error类。检查异常是需要在try-catchblock中捕获的异常。已检查和未检查异常的定义可以在Section11.2:Compile-TimeCheckingofExceptions中找到。的TheJavaLanguageSpecificat

java - 理解 try catch finally 及其返回值

我有以下一段代码。publicstaticvoidmain(String[]args){System.out.println(returnString());}privatestaticStringreturnString(){try{System.out.println("Executingtry");return"Returntryvalue";}catch(Exceptione){System.out.println("ExecutingCatch");return"Returncatchvalue";}finally{System.out.println("Executingf