`
alanwu
  • 浏览: 200696 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

囧,Scala2.7.x上发现一个隐蔽的大bug, finally的异常被catch回去了。。。

阅读更多

不好意思关于Scala的第一篇就是关于Scala的bug。。。

 

 

Java中异常捕获:

class OE {
public static void main(String args[]) {
try {
System.out.println("hi");
}
catch (Exception e) {
System.out.println("GOT HERE");
}
finally {
throw new RuntimeException("ouch");
}
}
}
 

 

输出:

hi
Exception in thread "main" java.lang.RuntimeException: ouch
at OE.main(OE.java:11)
 

 

Scala中的异常捕获:

try {
 println("hi")
}
catch {
 case e => println("GOT HERE")
}
finally {
 println("in finally")
 throw new RuntimeException("ouch")
}

 输出:

 

hi
in finally
GOT HERE
in finally
in finally
java.lang.RuntimeException: ouch
       at Test$.main(finally.scala:11)
       at Test.main(finally.scala)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:616)
       at scala.tools.nsc.ObjectRunner$$anonfun$run$1.apply(ObjectRunner.scala:75)
       at scala.tools.nsc.ObjectRunner$.withContextClassLoader(ObjectRunner.scala:49)
       at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:74)
       at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:154)
       at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala

 

finally 打印后抛出异常,然后又catch回去了,再接着打印了两次"hi finally"....

 

这个bug肯定会在2.8中修复。

 

0
0
分享到:
评论
1 楼 蔡华江 2010-08-20  
初学scala。
楼主的代码在2.8中表现同样神奇。
引用
Exception in thread "main" java.lang.RuntimeException: ouch
at org.ocasoframework.HelloWorld$.main(HelloWorld.scala:13)
at org.ocasoframework.HelloWorld.main(HelloWorld.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
hi
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115)
in finally

感觉throw出的exception与两个printf不是处于同一个线程了

相关推荐

    spark-2.1.1-bin-hadoop2.7.tgz.7z

    总的来说,Spark 2.1.1-bin-hadoop2.7.tgz.7z是一个包含完整Spark环境的压缩包,适合在Linux系统上进行大数据处理。它的使用涉及到Spark的安装、配置、编程接口、核心组件以及与Hadoop的集成等多个方面,为开发者...

    spark-2.3.4-bin-hadoop2.7.tgz

    Spark是Apache软件基金会下的一个开源大数据处理框架,其设计目标是提供快速、通用以及可扩展的数据处理能力。在本案例中,我们关注的是Spark的2.3.4版本,它预编译为与Hadoop 2.7兼容的版本,打包成"spark-2.3.4-...

    spark-3.2.1-bin-hadoop2.7.tgz

    Spark是Apache软件基金会下的一个开源大数据处理框架,以其高效、灵活和易用的特性而闻名。这个名为"spark-3.2.1-bin-hadoop2.7.tgz"的压缩包是Spark的一个特定版本,即3.2.1,与Hadoop 2.7版本兼容。在Linux环境下...

    spark-3.1.2-bin-hadoop2.7.tgz

    Spark是Apache软件基金会下的一个开源大数据处理框架,以其高效、灵活和易用的特性而闻名。这个"spark-3.1.2-bin-hadoop2.7.tgz"是一个压缩包,包含了Spark 3.1.2版本,针对Hadoop 2.7优化的二进制发行版。在Linux...

    spark-3.0.1-bin-hadoop2.7.tgz

    Spark 3.0.1是Apache Spark的一个重要版本,它是一个快速、通用且可扩展的大数据处理框架。基于Hadoop 2.7,这个版本的Spark提供了与Hadoop生态系统良好的兼容性,允许用户在分布式计算环境中高效地处理大规模数据。...

    spark-2.3.1-bin-hadoop2.7.zip

    Spark是Apache软件基金会下的一个开源大数据处理框架,其主要特点是高效、通用、易用和可扩展。Spark 2.3.1是Spark的一个稳定版本,它在2.3系列中包含了多个性能优化和新功能的引入。这次我们讨论的是Spark 2.3.1与...

    spark-2.0.0-bin-hadoop2.7.tgz.zip

    Spark是Apache软件基金会下的一个开源大数据处理框架,它以其高效的计算性能、易用性以及对多种数据源的支持而广受欢迎。Spark 2.0.0是Spark的一个重要版本,引入了诸多新特性和改进,与Hadoop 2.7集成,提供了一套...

    spark-2.3.1-bin-hadoop2.7.rar

    Spark是Apache软件基金会下的一个开源大数据处理框架,它以其高效的计算性能、易用性和灵活性而闻名。本资源提供了Spark的2.3.1版本,这是一个稳定且广泛使用的版本,适用于各种大数据处理任务。该版本与Hadoop 2.7...

    spark-2.4.7-bin-hadoop2.7.tgz

    Spark 2.4.7是Apache Spark的一个稳定版本,它为大数据处理提供了高效、易用且可扩展的框架。这个版本兼容Hadoop 2.7,这意味着它可以在使用Hadoop 2.7作为数据存储和资源管理的环境中无缝运行。Spark的核心特性包括...

    spark-3.1.2.tgz & spark-3.1.2-bin-hadoop2.7.tgz.rar

    Spark是Apache软件基金会下的一个开源大数据处理框架,它在大数据领域扮演着重要的角色,尤其在实时数据处理和批处理方面表现突出。Spark-3.1.2.tgz和Spark-3.1.2-bin-hadoop2.7.tgz是两个不同格式的Spark发行版,...

    spark-2.4.0-bin-hadoop2.7.rar

    Spark 2.4.0是Apache Spark的一个重要版本,它是一个快速、通用且可扩展的大数据处理框架。这个版本在2.3的基础上进行了多方面的优化和功能增强,旨在提高数据处理效率,支持更多数据源,并提供了更丰富的数据分析...

    maven-scala-plugin-2.7.jar

    maven-scala-plugin-2.7.jar

    scala-2.12.11.tgz

    修订号,2.12.x系列代表了Scala的一个稳定分支,提供了对Java平台的兼容性和优化。 Scala对于大数据处理领域有着重要的角色,特别是与Apache Spark的结合。Spark是一个快速、通用且可扩展的数据处理引擎,它广泛...

    scala-2.12.14.zip&scala-2.12.11.tgz Linux版本压缩包.rar

    Scala是一种强大的多范式编程语言,它融合了面向对象编程和函数式编程的概念,被广泛应用于大数据处理和分布式计算领域,特别是在Apache Spark等框架中。标题提到的"scala-2.12.14.zip&scala-2.12.11.tgz"是Scala的...

    scala-2.12.13.tgz

    这个"scala-2.12.13.tgz"文件是Scala编程语言的一个版本,针对Linux操作系统提供的安装包。tgz(tar.gz)格式是一种常见的Linux软件分发方式,它是通过tar工具将多个文件打包成一个文件,然后用gzip工具进行压缩,以...

    spark-3.0.1-bin-hadoop2.7.zip

    Spark 3.0.1是该框架的一个稳定版本,它基于Hadoop 2.7进行构建,提供了对大规模数据集的强大处理能力。Spark的核心设计理念是支持交互式数据处理,它通过内存计算显著提升了数据处理速度,比传统的MapReduce模型快...

    scala2.12.zip

    Scala 2.12是Scala语言的一个主要版本,它的主要特点是向后兼容性,这意味着大多数2.11.x版本的代码在2.12上也能正常运行。这个版本引入了许多改进和优化,包括性能提升、类型系统增强以及对Java 8特性的支持,如...

    Scala语言规范-v2.7.rar

    Scala语言规范v2.7是该语言的一个早期版本,它为开发者提供了关于语法、类型系统、类、对象、模块、异常处理等核心概念的详细指南。 Scala在大数据领域中尤其受到关注,尤其是与Apache Spark的结合。Spark是一个...

    在浏览器上运行 Scala Scala.js.zip

    Scala.js是Scala社区的一个重要里程碑,它允许开发者使用强大的Scala编程语言编写前端应用,然后通过编译转换为JavaScript代码,进而实现在浏览器环境中运行。这一技术极大地拓宽了Scala的应用领域,使得开发者能够...

    scala-2.12.12.zip

    Scala 2.12.x系列是一个长期支持(LTS)版本,意味着它将得到较长时间的安全更新和技术支持。这个版本的升级可能包含了对语言特性的改进、性能优化、bug修复以及对其他库和框架的兼容性提升。 Scala的核心特性包括...

Global site tag (gtag.js) - Google Analytics