草庐IT

try-Catch

全部标签

java - 为什么在 java 中的 catch block 中需要括号?

在java中,如果我们只需要在if或for之后执行一条语句,则不需要括号。我们可以这样写:if(condition)executeSingleStatement();或for(init;condition;incr)executeSingleStatement();但是在catchblock的情况下为什么我们不能省略括号呢?为什么这是不可能的?catch(Exceptione)e.printStackTrace();因为在大多数情况下,我们我在catchblock中只有一个语句,即e.printStackTrace()whiletesting或logging语句。

Java 8 catch 22 与 lambda 表达式和有效的 final

我正在玩Java8并遇到了一个基本场景,该场景说明了陷阱22,其中修复一个编译错误会导致另一个编译错误。场景(这只是一个从更复杂的东西简化而来的例子):publicstaticListcatch22(Listinput){Listresult=null;if(input!=null){result=newArrayList(input.size());input.forEach(e->result.add(e));//compileerrorhere}returnresult;}编译错误:Localvariableresultdefinedinanenclosingscopemustb

java - Try-catch:这是可以接受的做法吗?

我们从软件供应商那里收到了Java代码。它包含很多try-catchblock,而catch部分没有任何内容。他们到处都是。示例:try{spaceBlock.enable(LindsayModel);}catch(Exceptione){}我的问题是:上述做法是否可以接受?如果是这样,什么时候?还是我应该继续删除所有这些“伪造的”try和catch语句?对我来说,这看起来像是糟糕的做法,但我在Java方面经验不足,无法确定。如果您不打算对它们做任何事情,为什么要捕获错误呢?在我看来,只有当您确信异常绝对不会造成任何后果并且您不在乎是否会发生时,您才会这样做。但是,在我们的特定应用程序

Java - 如果我在 catch block 中返回,finally block 会被执行吗?

这个问题在这里已经有了答案:DoesafinallyblockalwaysgetexecutedinJava?(51个答案)关闭9年前。这就是我想要做的:try{//code}catch(Exceptione){returnfalse;}finally{//closeresources}这行得通吗?这是不好的做法吗?这样做会更好吗:booleaninserted=true;try{//code}catch(Exceptione){inserted=false;}finally{//closeresources}returninserted;

java - 确定编译时多捕获异常类型

我构建了一些我并不真正理解的东西-我不知道它是如何工作的。我已经熟悉了这个multicatchexplainationarticle.考虑这两个异常和代码:publicclassMyException1extendsException{//constructors,etcStringgetCustomValue();}publicclassMyException2extendsException{//constructors,etcStringgetCustomValue(){return"foo";}}try{//...}catch(MyException1|MyException2

java - try-with-resource 中的 close() 异常

这个问题在这里已经有了答案:Closeresourcequietlyusingtry-with-resources(4个答案)关闭去年。我正在阅读有关JDK7中的try-with-resource的信息,当我考虑升级我的应用程序以使用JDK7运行时,我遇到了这个问题..例如,当使用BufferedReader时,写入抛出IOException而关闭抛出IOException..在catchblock中我担心写入抛出的IOException..但我不太关心关闭抛出的那个..同样的问题与数据库连接..和任何其他资源..例如,我创建了一个可自动关闭的资源:publicclassAutoClo

java - 如何尝试......最终在内部工作

目前我正在使用try..finallyblock来优化我的对象。但我很困惑,当我在finallyblock中创建对对象的空引用时,如何管理返回对象。??在tryblock中返回一个对象时,会不会在编译过程中创建一个预编译语句?或者在返回语句时在堆中创建新引用?或者只返回对象的当前引用?下面是我的研究代码。publicclasstestingFinally{publicstaticStringgetMessage(){Stringstr="";try{str="Helloworld";System.out.println("InsideTryBlock");System.out.prin

java - 为什么添加 try block 会使程序更快?

我正在使用以下代码来测试tryblock有多慢。令我惊讶的是,tryblock使它更快。为什么?publicclassTest{intvalue;publicintgetValue(){returnvalue;}publicvoidreset(){value=0;}//Calculateswithoutexceptionpublicvoidmethod1(inti){value=((value+i)/i)我的机器运行的是64位Windows7和64位JDK7。我得到以下结果:method1took914ms,resultwas2method1withtryblocktook789ms,

java - 使用注释进行异常处理?

假设我有一个抛出某种异常的方法。异常抛出代码位于访问外部服务的第三方库中。我有几个类在处理外部服务方面做了大量工作,并且在整个过程中有很多异常处理来处理潜在的问题。我遇到的问题是我可能有很多异常,但如果有的话,我可能只需要执行几个操作之一,并且有大量的try/catchblock。异常的类型甚至可能不相关,或者不同的方法可能抛出相同类型的异常,但需要根据抛出异常的方法采取不同的操作。我正在寻找的是一个注释,它可以取代try/catch并简单地指示在该方法中出现异常时要采取的行为。我知道SpringApsectJ可以做这类事情,但我目前无法轻松添加任何新的依赖项或修改pom以调整现有的依

Java:Try-Catch-Continue?

假设我可以一组语句:try{Stringa=getProperty("a");Stringb=getProperty("b");Stringc=getProperty("c");}catch(Exceptione){}现在,假设属性b未找到并且函数抛出异常。在这种情况下,我将如何继续或将b设置为null而不必为每个属性编写一个try-catchblock?我的意思是,a、b、c存在,但有时可能根本找不到它们,在此期间会引发异常。 最佳答案 假设您无法更改函数以便在未找到该属性时它返回null,那么您有点卡住了,将所有内容都包装在它自