我在朱莉娅有一个函数我想调用一组参数。它可能会抛出一个exeption,我想将它转换为带有bactrace的字符串并将其记录下来以供进一步检查。
for i in 1:100
try
myfun(i)
catch ex
println(ex)
println(bactrace(ex)) # does not work
end
end
朱莉娅怎么能这样做?
答案 0 :(得分:4)
我知道这是一个有点老问题,但这是我发现的:
deleteUser
只显示回溯,
Base.show_backtrace(io, bt)
将其打印成字符串,以备日志记录。
编辑:上一个答案中的error_show现在是淋浴;看来好像
sprint(io->Base.show_backtrace(io, bt))
来源:https://groups.google.com/forum/#!topic/julia-users/S485_5jG2Nw
更新2:在v0.5中,您可以str = showerror(STDOUT, ex, catch_backtrace())
和stacktrace()
虽然您必须循环遍历堆栈跟踪数组以打印它AFAIK。
答案 1 :(得分:1)
在代码中再搜索一下,发现这种作品。它使用未在API中导出的函数,因此将来可能会中断,但是现在它会打印出一个堆栈跟踪。
try
function()
catch ex
Base.error_show(STDERR, ex, catch_backtrace())
end