Трассировки стека Scala, как известно, сложны, особенно из-за того, как анонимные функции переводятся в байт-код. Вот пример:«Лучше» трассировки стека scala
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' не говорит мне никакой полезной информации, ни 5 строк трассировки для простой« flatMap ». Хотя, конечно, интересно взглянуть на внутренности scala, большую часть времени я бы лучше понял, что пошло не так. *. Быстро. – goncalopp
Технически проблема с трассировкой стека Scala заключается в том, что это не трассировка стека Scala, это трассировка стека Java. Не помогает. –