将带有bactrace的异常转换为Julia中的字符串

时间:2013-07-06 20:58:06

标签: julia

我在朱莉娅有一个函数我想调用一组参数。它可能会抛出一个exeption,我想将它转换为带有bactrace的字符串并将其记录下来以供进一步检查。

for i in 1:100
    try
        myfun(i)
    catch ex
        println(ex)
        println(bactrace(ex)) # does not work
    end
end

朱莉娅怎么能这样做?

2 个答案:

答案 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。

来源:https://docs.julialang.org/en/stable/manual/stacktraces/

答案 1 :(得分:1)

在代码中再搜索一下,发现这种作品。它使用未在API中导出的函数,因此将来可能会中断,但是现在它会打印出一个堆栈跟踪。

try
    function()
catch ex
    Base.error_show(STDERR, ex, catch_backtrace())
end