You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

callr包错误处理机制及自定义错误输出方式咨询

自定义callr包子进程的错误输出格式

问题场景

使用callr的r_bg()创建后台子进程时,默认的错误提示会包含子进程相关的冗余信息,示例如下:

rp <- callr::r_bg(function() stop("You should see this"), error = getOption("callr.error", "error"))
Sys.sleep(2)
rp$get_result()
#> Error: ! in callr subprocess.
#> Caused by error in `(function () …`:
#> ! You should see this

这类callr相关的包装信息会让终端用户困惑,需要只保留自定义的错误消息Error: You should see this。

解决方案

将error参数设置为"simple",即可直接返回原始的错误消息,屏蔽callr的上下文包装内容:

rp <- callr::r_bg(function() stop("You should see this"), error = "simple")
Sys.sleep(2)
rp$get_result()
#> Error: You should see this

error参数的有效选项

callr的error参数支持以下取值,对应不同的错误处理逻辑:

  • "error"(默认值):抛出包含callr子进程上下文的结构化错误,即默认显示的带前缀的错误信息
  • "simple":返回原始错误对象,仅展示自定义的错误消息,无额外上下文
  • "stack":抛出包含完整调用栈的错误,包含子进程内的调用栈详情
  • "debugger":在子进程中启动调试器,用于调试错误场景
  • "null":不主动抛出错误,返回错误对象本身,需自行编写逻辑处理

内容的提问来源于stack exchange,提问作者JBGruber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 07:22:13