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

将bactrace异常转换为Julia中的字符串,julia,Julia,Julia中有一个函数,我想调用一组参数。它可能会抛出一个exeption,我想用bactrace将它转换成一个字符串,并记录它以供进一步检查 for i in 1:100 try myfun(i) catch ex println(ex) println(bactrace(ex)) # does not work end end 在朱莉娅身上怎么能做到这一点呢?在代码中再搜索一点,就会发现这种方法是有效的。它使用了一个未

Julia中有一个函数,我想调用一组参数。它可能会抛出一个exeption,我想用bactrace将它转换成一个字符串,并记录它以供进一步检查

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

在朱莉娅身上怎么能做到这一点呢?

在代码中再搜索一点,就会发现这种方法是有效的。它使用了一个未在API中导出的函数,因此将来可能会中断,但现在它会向我打印一个堆栈跟踪

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

我知道这是个老问题,但我发现:

Base.show_backtrace(io, bt) 
只显示回溯,并且

sprint(io->Base.show_backtrace(io, bt)) 
将其打印到字符串中,以备记录

编辑:上一个答案中显示的错误现在是错误;看来

str = showerror(STDOUT, ex, catch_backtrace())
资料来源:

更新2:在v0.5中,您只需执行
stacktrace()
catch\u stacktrace()

虽然你必须循环通过StackTrace数组来打印它

资料来源: