Scala Stack-Traces sind notorisch komplex, vor allem wegen der Art, wie anonyme Funktionen in Bytecode übersetzt werden. Hier ist ein Beispiel:"Besser" Scala Stack Spuren
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)
habe ich da gefunden stackifier (es ist ihr Beispiel), aber es ist umständlich Einfügen von Stack-Traces auf eine Webseite zu halten. Gibt es eine Möglichkeit, "bessere" Stack-Traces auf der Konsole zu drucken?
Wie ist der Stack-Trace komplex? Es teilt Ihnen die Zeile mit, in der die Ausnahme aufgetreten ist. – vptheron
@vptheron Der Punkt eines Stack-Trace ist nicht nur die Zeile, in der die Ausnahme aufgetreten ist, sondern auch * wie sie dorthin gelangt ist *. "Complex" ist meist subjektiv - für mich bedeutet "$$ anonfun $ go $ 2 $ $ anonfun $ apply $ 2" keine nützlichen Informationen, auch keine 5 Zeilen für eine einfache 'flatMap'. Obwohl es sicherlich interessant ist, einen Blick auf Scala's Interna zu werfen, würde ich die meiste Zeit lieber verstehen, was schiefgelaufen ist. Schnell. – goncalopp
Technisch gesehen ist das Problem mit dieser Scala-Stack-Ablaufverfolgung, dass es sich nicht um eine Scala-Stack-Ablaufverfolgung handelt, sondern um eine Java-Stack-Ablaufverfolgung. Hilft dir aber nicht. –