[
https://issues.apache.org/jira/browse/SPARK-13172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15138423#comment-15138423
]
sachin aggarwal edited comment on SPARK-13172 at 2/9/16 6:33 AM:
-----------------------------------------------------------------
there are two ways we can proceed :- first use printStackTrace and second to
use mkString()
1) can be ecapsulated in function :-
{code}
def getStackTraceAsString(t: Throwable) = {
val sw = new StringWriter
t.printStackTrace(new PrintWriter(sw))
sw.toString
}
{code}
2) println(t.getStackTrace.mkString("\n"))
mkstring approach give extractly same string as old function getStackTraceString
but the output of first approach is more readable.
try this code to see the difference
{code:title=TrySuccessFailure.scala|borderStyle=solid}
import scala.util.{Try, Success, Failure}
import java.io._
object TrySuccessFailure extends App {
badAdder(3) match {
case Success(i) => println(s"success, i = $i")
case Failure(t) =>
// this works, but it's not too useful/readable
println(t.getStackTrace.mkString("\n"))
println("===================================")
println(t.getStackTraceString)
// this works much better
val sw = new StringWriter
t.printStackTrace(new PrintWriter(sw))
println(sw.toString)
}
def badAdder(a: Int): Try[Int] = {
Try({
val b = a + 1
if (b == 3) b else {
val ioe = new IOException("Boom!")
throw new AlsException("Bummer!", ioe)
}
})
}
class AlsException(s: String, e: Exception) extends Exception(s: String, e:
Exception)
}
{code}
was (Author: sachin aggarwal):
there are two ways we can proceed :- first use printStackTrace and second to
use mkString()
1) can be ecapsulated in function :-
def getStackTraceAsString(t: Throwable) = {
val sw = new StringWriter
t.printStackTrace(new PrintWriter(sw))
sw.toString
}
2) println(t.getStackTrace.mkString("\n"))
mkstring approach give extractly same string as old function getStackTraceString
but the output of first approach is more readable.
try this code to see the difference
{code:title=TrySuccessFailure.scala|borderStyle=solid}
import scala.util.{Try, Success, Failure}
import java.io._
object TrySuccessFailure extends App {
badAdder(3) match {
case Success(i) => println(s"success, i = $i")
case Failure(t) =>
// this works, but it's not too useful/readable
println(t.getStackTrace.mkString("\n"))
println("===================================")
println(t.getStackTraceString)
// this works much better
val sw = new StringWriter
t.printStackTrace(new PrintWriter(sw))
println(sw.toString)
}
def badAdder(a: Int): Try[Int] = {
Try({
val b = a + 1
if (b == 3) b else {
val ioe = new IOException("Boom!")
throw new AlsException("Bummer!", ioe)
}
})
}
class AlsException(s: String, e: Exception) extends Exception(s: String, e:
Exception)
}
{code}
> Stop using RichException.getStackTrace it is deprecated
> -------------------------------------------------------
>
> Key: SPARK-13172
> URL: https://issues.apache.org/jira/browse/SPARK-13172
> Project: Spark
> Issue Type: Sub-task
> Components: Spark Core
> Reporter: holdenk
> Priority: Trivial
>
> Throwable getStackTrace is the recommended alternative.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]