:: DeveloperApi ::
Task failed due to a runtime exception. This is the most common failure case and also captures
user program exceptions.
stackTrace contains the stack trace of the exception itself. It still exists for backward
compatibility. It's better to use this(e: Throwable, metrics: Option[TaskMetrics]) to
create ExceptionFailure as it will handle the backward compatibility properly.
this(e: Throwable, metrics: Option[TaskMetrics])
fullStackTrace is a better representation of the stack trace because it contains the whole
stack trace including the exception and its causes
Error message displayed in the web UI.