Dấu vết ngăn xếp Scala nổi tiếng phức tạp, đặc biệt là do các hàm ẩn danh được dịch sang bytecode. Dưới đây là một ví dụ:Dấu vết ngăn xếp dấu vết "tốt hơn"
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)
Tôi đã kể từ khi tìm thấy stackifier (đó là tấm gương của họ), nhưng nó cồng kềnh để giữ dán chồng dấu vết đến một trang web. Có cách nào để in dấu vết ngăn xếp "tốt hơn" trên bảng điều khiển không?
Tổ hợp dấu vết ngăn xếp như thế nào? Nó cho bạn biết dòng nơi ngoại lệ đã xảy ra. – vptheron
@vptheron Điểm của một dấu vết ngăn xếp không chỉ là để biết dòng nơi ngoại lệ đã xảy ra, mà còn * làm thế nào nó đã có *. "Phức tạp" chủ yếu là chủ quan - với tôi, '$ anonfun $ go $ 2 $$ anonfun $ áp dụng $ 2' không cho tôi biết bất kỳ thông tin hữu ích nào, cũng không làm 5 dòng dấu vết cho một' sơ đồ phẳng 'đơn giản. Mặc dù nó thực sự thú vị khi có một cái nhìn tại ruột của scala, hầu hết thời gian tôi chỉ muốn hiểu * những gì đã xảy ra *. Nhanh. – goncalopp
Về mặt kỹ thuật, vấn đề với dấu vết ngăn xếp Scala này là nó không phải là một dấu vết ngăn xếp Scala, đó là một dấu vết ngăn xếp Java. Tuy nhiên, không giúp bạn. –