草庐IT

final_msg

全部标签

java - 是否可以在我进入 finally block 之前检测是否发生异常?

在Java中,是否有一种优雅的方法可以在运行finallyblock之前检测是否发生异常?在处理“close()”语句时,通常需要在finallyblock中处理异常。理想情况下,我们希望维护两个异常并将它们向上传播(因为它们都可能包含有用的信息)。我能想到的唯一方法是在try-catch-finally范围之外有一个变量来保存对抛出异常的引用。然后将“已保存”异常与finallyblock中发生的任何异常一起传播。有没有更优雅的方式来做到这一点?也许API调用会揭示这一点?这是我所说的一些粗略代码:Throwablet=null;try{stream.write(buffer);}c

java - 是否可以在我进入 finally block 之前检测是否发生异常?

在Java中,是否有一种优雅的方法可以在运行finallyblock之前检测是否发生异常?在处理“close()”语句时,通常需要在finallyblock中处理异常。理想情况下,我们希望维护两个异常并将它们向上传播(因为它们都可能包含有用的信息)。我能想到的唯一方法是在try-catch-finally范围之外有一个变量来保存对抛出异常的引用。然后将“已保存”异常与finallyblock中发生的任何异常一起传播。有没有更优雅的方式来做到这一点?也许API调用会揭示这一点?这是我所说的一些粗略代码:Throwablet=null;try{stream.write(buffer);}c

java - "final"在运行时是最终的吗?

我一直在玩ASM,并且我相信我成功地将final修饰符添加到类的实例字段中;但是,然后我继续实例化所述类并在其上调用setter,这成功地更改了now-final字段的值。我的字节码更改是否有问题,还是最终仅由Java编译器强制执行?更新:(7月31日)这里有一些代码供您引用。主要部分是一个带有privateintx和privatefinalinty的简单POJO,MakeFieldsFinalClassAdapter,它使得它访问的每个字段都是最终的,除非它已经是最终的,和AddSetYMethodVisitor,它会导致POJO的setX()方法也将y设置为与设置x相同的值。换句话

java - "final"在运行时是最终的吗?

我一直在玩ASM,并且我相信我成功地将final修饰符添加到类的实例字段中;但是,然后我继续实例化所述类并在其上调用setter,这成功地更改了now-final字段的值。我的字节码更改是否有问题,还是最终仅由Java编译器强制执行?更新:(7月31日)这里有一些代码供您引用。主要部分是一个带有privateintx和privatefinalinty的简单POJO,MakeFieldsFinalClassAdapter,它使得它访问的每个字段都是最终的,除非它已经是最终的,和AddSetYMethodVisitor,它会导致POJO的setX()方法也将y设置为与设置x相同的值。换句话

java - finalize() 在 Java 8 中调用强可达对象

我们最近将消息处理应用程序从Java7升级到了Java8。升级后,我们偶尔会遇到异常,即在读取流时已关闭它。日志显示终结器线程正在对保存流的对象调用finalize()(进而关闭流)。代码基本大纲如下:MIMEWriterwriter=newMIMEWriter(out);in=newInflaterInputStream(databaseBlobInputStream);MIMEBodyPartattachmentPart=newMIMEBodyPart(in);writer.writePart(attachmentPart);MIMEWriter和MIMEBodyPart是本地MI

java - finalize() 在 Java 8 中调用强可达对象

我们最近将消息处理应用程序从Java7升级到了Java8。升级后,我们偶尔会遇到异常,即在读取流时已关闭它。日志显示终结器线程正在对保存流的对象调用finalize()(进而关闭流)。代码基本大纲如下:MIMEWriterwriter=newMIMEWriter(out);in=newInflaterInputStream(databaseBlobInputStream);MIMEBodyPartattachmentPart=newMIMEBodyPart(in);writer.writePart(attachmentPart);MIMEWriter和MIMEBodyPart是本地MI

java - 了解此警告 : The serializable class does not declare a static final serialVersionUID

我有一些静态初始化代码:someMethodThatTakesAHashMap(newHashMap(){{put("a","value-a");put("c","value-c");}});由于某种原因,我收到了来自Eclipse的警告:可序列化类未声明静态最终serialVersionUID。这是在提示匿名类吗?我能做些什么呢,或者我应该压制它。 最佳答案 您使用的语法称为double-braceinitialization-这实际上是一个“instanceinitializationblock是anonymousinnercl

java - 了解此警告 : The serializable class does not declare a static final serialVersionUID

我有一些静态初始化代码:someMethodThatTakesAHashMap(newHashMap(){{put("a","value-a");put("c","value-c");}});由于某种原因,我收到了来自Eclipse的警告:可序列化类未声明静态最终serialVersionUID。这是在提示匿名类吗?我能做些什么呢,或者我应该压制它。 最佳答案 您使用的语法称为double-braceinitialization-这实际上是一个“instanceinitializationblock是anonymousinnercl

java - 为什么 emma 没有完全覆盖 finally block ?

我不明白为什么emma没有为“finally”block提供完整的代码覆盖率。我制作了一个简短的示例程序来演示这一点。当我执行程序时它显示:tryfinally所以我不明白为什么finally被标记为红色(未执行)而“finally”“println”被标记为黄色(部分执行)。我错过了什么吗?如何让emma明白finallyblock被覆盖了?谢谢! 最佳答案 在EMMA常见问题解答中有一个条目:Implicitbranchesduetofinallyblocks.触及部分覆盖的finallyblock的主题。也许这有帮助。

java - 为什么 emma 没有完全覆盖 finally block ?

我不明白为什么emma没有为“finally”block提供完整的代码覆盖率。我制作了一个简短的示例程序来演示这一点。当我执行程序时它显示:tryfinally所以我不明白为什么finally被标记为红色(未执行)而“finally”“println”被标记为黄色(部分执行)。我错过了什么吗?如何让emma明白finallyblock被覆盖了?谢谢! 最佳答案 在EMMA常见问题解答中有一个条目:Implicitbranchesduetofinallyblocks.触及部分覆盖的finallyblock的主题。也许这有帮助。