10
斯卡拉堆棧跟蹤非常複雜,尤其是因爲匿名函數被轉換爲字節碼的方式。這裏有一個例子:「更好」的斯卡拉堆棧跟蹤
java.lang.IllegalStateException
at com.company.IdentityVerifier$$anonfun$go$2$$anonfun$apply$2.apply$mcII$sp(IdentityVerifier.scala:19)
at com.company.IdentityVerifier$$anonfun$go$2$$anonfun$apply$2.apply(IdentityVerifier.scala:17)
at com.company.IdentityVerifier$$anonfun$go$2$$anonfun$apply$2.apply(IdentityVerifier.scala:17)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at com.company.IdentityVerifier$$anonfun$go$2.apply(IdentityVerifier.scala:17)
at com.company.IdentityVerifier$$anonfun$go$2.apply(IdentityVerifier.scala:16)
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
at com.company.IdentityVerifier$.go(IdentityVerifier.scala:16)
at com.company.UserMap.setLastUserId(UserMap.scala:12)
at com.company.UserConsumer.setCurrentUser(UserConsumer.java:69)
at com.company.UserConsumer.consume(UserConsumer.java:64)
at com.company.UserProducer.execute(UserProducer.java:19)
at com.company.UserCreator.execute(UserCreator.java:18)
at com.company.UserCreatorMain$1.run(UserCreatorMain.java:37)
at com.company.UserCreatorMain.main(UserCreatorMain.java:51)
因爲我已經發現stackifier(這是他們的例子),但它的繁瑣,以保持粘貼堆棧跟蹤到的網頁。有沒有辦法在控制檯上打印「更好」的堆棧軌跡?
堆棧跟蹤如何複雜?它會告訴你發生異常的地方。 – vptheron
@vptheron堆棧跟蹤的要點不僅在於知道異常發生的地方,而且還知道它如何到達那裏*。 「複雜」主要是主觀的 - 對我來說,'$$ anonfun $ go $ 2 $$ anonfun $ apply $ 2'不會告訴我任何有用的信息,也不會爲簡單的'flatMap'做5行跟蹤。儘管查看Scala的內部結構確實很有趣,但大部分時間我寧願理解*出了什麼問題*。快速。 – goncalopp
從技術上講,這個Scala堆棧跟蹤的問題在於它不是一個Scala堆棧跟蹤,它是一個Java堆棧跟蹤。儘管如此,對你沒有幫助。 –