Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“更好”;scala堆栈跟踪_Scala_Stack Trace - Fatal编程技术网

&引用;“更好”;scala堆栈跟踪

&引用;“更好”;scala堆栈跟踪,scala,stack-trace,Scala,Stack Trace,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.

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)

我发现了(这是他们的例子),但一直将堆栈跟踪粘贴到网页上是一件痛苦的事情。有没有一种方法可以自动打印“更好”的堆栈跟踪?

Intellij IDEA有帮助,即使在您没有调试代码的情况下(scala插件甚至可以与社区版本一起使用):

您将获得一个可单击的堆栈跟踪,该跟踪将跳转到正确的位置

我在ScalaIDE论坛上问ScalaIDE是否也这样做。Mirco Dotta忍者回应说:

是的,确实如此,但这不是Eclipse中最简单的特性。你需要

还没问过emacs的事,请有人插嘴


也请考虑“隐藏”的名称(参见C++名称的缩写)是为了增加灵活性而付出的代价。

堆栈跟踪复杂度如何?它告诉您异常发生的位置。@vptheron堆栈跟踪的重点不仅是要知道异常发生的位置,还要知道异常是如何到达的。“复杂”主要是主观的-对我来说,
$$anonfun$go$2$$anonfun$apply$2
没有告诉我任何有用的信息,简单的
平面图的5行跟踪也没有告诉我。尽管窥探scala的内部结构确实很有趣,但在大多数情况下,我只想了解出了什么问题。从技术上讲,这个Scala堆栈跟踪的问题在于它不是Scala堆栈跟踪,而是Java堆栈跟踪。但这对你没有帮助。就像调试C++模板编译器错误一样,你只需“学习”就能阅读这些东西。