如何在Rscript中检测/处理用户中断

时间:2017-09-06 15:44:09

标签: r rscript

我有一个R脚本,用于通过Rscript.exe执行命令行,包括一个长时间运行的循环,它可以调用API并将结果写入数据库。该脚本包括通过trycatch进行数据库清理的错误处理:

trycatch({
  # api and database call loop
}, finally = {
  # database cleanup
})

这很好地处理了API和数据库错误,但是用户中断(bash CTRL + C)终止执行而不触发finally块。

有没有办法允许用户输入启动优雅退出?这可以是检测硬中断并处理它的方法,也可以是每个循环检查一次的方法,如果已经进行了某些键盘输入(没有暂停循环以等待输入)。

1 个答案:

答案 0 :(得分:0)

您是否尝试添加错误条款?

trycatch({
    # api and database call loop
    }, 
    error=function(e) {   
            message(paste("ERROR:", e))
            #implement graceful exit
            return(NULL) #or whatever value you want
    },
    finally = {
    # database cleanup
    }
)