In the stacktrace, I typically expect that scrolling all the way up will get me to the “deepest” level of the call stack.
However, when having code in @threads, the resulting exceptions are TaskFailedException that print first their backtrace and then the nested task’s error, which I find contrary to typical practice.
Overwriting showerror with:
function showerror(io::IO, ex::TaskFailedException, bt = nothing; backtrace=true)
println(io, "TaskFailedException")
println(io, "Nested Task Exception:")
show_task_exception(io, ex.original_exception.task)
if bt !== nothing && backtrace
println(io, "\n\nAbove TaskFailedException was caused by:")
show_backtrace(io, bt)
end
println(io)
end
results in stacktraces that force me to scroll back-and-forth much less.
Was there a reason for the order of TaskFailedException’s showerror that I am missing?