草庐IT

try-catch-rethrow

全部标签

c# - 在 catch/finally block 中抛出吞咽异常

通常我会遇到这样的情况,我必须吞下catch/finallyblock中清理代码抛出的异常,以防止原始异常被吞下。例如://ClosingafileinJavapublicvoidexample1()throwsIOException{booleanexceptionThrown=false;FileWriterout=newFileWriter(“test.txt”);try{out.write(“example”);}catch(IOExceptionex){exceptionThrown=true;throwex;}finally{try{out.close();}catch(I

java - IntelliJ 错误 - java : try-with-resources is not supported in -source 1. 6 错误。即使在项目设置中选择了 1.7 JDK

在文件->项目结构->SDKs我有1.7jdk但我仍然得到这个错误:added.java:-source1.6不支持try-with-resources(使用-source7或更高版本来启用try-with-resources)我已经重启了IDE但是没有用 最佳答案 较新的JVM允许您使用较低JVM版本的编译器版本来编译代码。例如,JDK1.7将允许您使用1.5编译器编译代码。请参阅此处的“交叉编译部分”http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java

java - Java 7 中的 multi-catch 是如何实现的?

Java7编译器如何处理多捕获block?一个天真的实现是生成字节码,就好像存在多个catchblock一样。但是,我从多个来源了解到情况并非如此-处理多种异常类型的catchblock在编译期间不会产生重复的字节码。那么,它是如何工作的呢?是否有新的字节码指令告诉JVM有关多捕获block的信息? 最佳答案 基于JavaVirtualMachineSpecification,异常编译如下(总结):try代码运行正常每个catchblock都被编译成一个单独的方法有一个异常表将执行流重定向到正确的catchblock当使用多catc

java - 为什么 Java 中的 multi-catch 特性要求异常是最终的?

关于multi-catchfeature的Oracle文档添加到Java7声明catch子句中的异常参数隐式为final。我的问题是:这种限制有什么意义?因为我似乎找不到它带来的任何关键改进。将引用对象标记为final只会保护引用本身不被修改,而不是它引用的对象,并且永远不会禁止创建另一个引用并以他们想要的任何方式修改它。AsomewhatrelevantquestiononSO讨论了为什么在catch子句中修改异常引用不是最明智的做法,但它与catch的任何使用有关子句,而不仅仅是它的多捕获形式。那么,为什么Java为multi-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 - try-with-resource 中的 close() 异常

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

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

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