scala 捕获java异常_Scala try-catch没有捕获异常

据我所知,以下代码片段应该可以正常执行.流(“A”,“”).toIterable.map(_.head)抛出异常,应该由try块捕获.

import org.scalatest.FunSuite

class TryCatchTest extends FunSuite {

test("Try failure") {

List(1).flatMap {

_ =>

try {

Stream("A", "").toIterable.map(_.head)

} catch {

case e: Throwable => Nil

}

}

}

}

但是当我运行它时,崩溃时出现以下错误:

next on empty iterator

java.util.NoSuchElementException: next on empty iterator

at scala.collection.Iterator$$anon$2.next(Iterator.scala:39)

at scala.collection.Iterator$$anon$2.next(Iterator.scala:37)

at scala.collection.IndexedSeqLike$Elements.next(IndexedSeqLike.scala:63)

at scala.collection.IterableLike$class.head(IterableLike.scala:107)

at scala.collection.immutable.StringOps.scala$collection$IndexedSeqOptimized$$super$head(StringOps.scala:30)

at scala.collection.IndexedSeqOptimized$class.head(IndexedSeqOptimized.scala:126)

at scala.collection.immutable.StringOps.head(StringOps.scala:30)

at TryCatchTest$$anonfun$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$1.apply(TryCatchTest.scala:8)

at TryCatchTest$$anonfun$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$1.apply(TryCatchTest.scala:8)

at scala.collection.immutable.Stream$$anonfun$map$1.apply(Stream.scala:418)

at scala.collection.immutable.Stream$$anonfun$map$1.apply(Stream.scala:418)

at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1222)

at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1212)

at scala.collection.immutable.Stream.foreach(Stream.scala:595)

at scala.collection.immutable.List.flatMap(List.scala:327)

at TryCatchTest$$anonfun$1.apply$mcV$sp(TryCatchTest.scala:5)

at TryCatchTest$$anonfun$1.apply(TryCatchTest.scala:5)

at TryCatchTest$$anonfun$1.apply(TryCatchTest.scala:5)

at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)

at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)

at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)

at org.scalatest.Transformer.apply(Transformer.scala:22)

at org.scalatest.Transformer.apply(Transformer.scala:20)

at org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:166)

at org.scalatest.Suite$class.withFixture(Suite.scala:1122)

at org.scalatest.FunSuite.withFixture(FunSuite.scala:1555)

at org.scalatest.FunSuiteLike$class.invokeWithFixture$1(FunSuiteLike.scala:163)

at org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:175)

at org.scalatest.FunSuiteLike$$anonfun$runTest$1.apply(FunSuiteLike.scala:175)

at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)

at org.scalatest.FunSuiteLike$class.runTest(FunSuiteLike.scala:175)

at org.scalatest.FunSuite.runTest(FunSuite.scala:1555)

at org.scalatest.FunSuiteLike$$anonfun$runTests$1.apply(FunSuiteLike.scala:208)

at org.scalatest.FunSuiteLike$$anonfun$runTests$1.apply(FunSuiteLike.scala:208)

at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:413)

at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)

at scala.collection.immutable.List.foreach(List.scala:381)

at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)

at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:396)

at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:483)

at org.scalatest.FunSuiteLike$class.runTests(FunSuiteLike.scala:208)

at org.scalatest.FunSuite.runTests(FunSuite.scala:1555)

at org.scalatest.Suite$class.run(Suite.scala:1424)

at org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1555)

at org.scalatest.FunSuiteLike$$anonfun$run$1.apply(FunSuiteLike.scala:212)

at org.scalatest.FunSuiteLike$$anonfun$run$1.apply(FunSuiteLike.scala:212)

at org.scalatest.SuperEngine.runImpl(Engine.scala:545)

at org.scalatest.FunSuiteLike$class.run(FunSuiteLike.scala:212)

at org.scalatest.FunSuite.run(FunSuite.scala:1555)

at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:55)

at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$3.apply(Runner.scala:2563)

at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$3.apply(Runner.scala:2557)

at scala.collection.immutable.List.foreach(List.scala:381)

at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:2557)

at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1044)

at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1043)

at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:2722)

at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1043)

at org.scalatest.tools.Runner$.run(Runner.scala:883)

at org.scalatest.tools.Runner.run(Runner.scala)

at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:138)

at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)

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:606)

at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

有趣的是,如果我做出以下任何更改,它将按预期运行:

>用地图替换flatMap

>将“A”替换为“”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值