2017-09-06 72 views
0

我有一個R腳本,專門用於通過Rscript.exe命令行執行,其中包含一個長時間運行的循環,用於調用API並將結果寫入數據庫。腳本包括錯誤經由trycatch處理對數據庫清除:如何在Rscript中檢測/處理用戶中斷

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

此處理API和數據庫錯誤很好,但一個用戶中斷(bash的CTRL + C)則終止執行而不觸發finally塊。

有沒有什麼辦法可以讓用戶輸入啓動一個優雅的退出?這可能是一種檢測硬中斷並處理它的方法,或者是一種在每個循環中檢查一次是否已經做出鍵盤輸入(而不是暫停等待輸入的循環)的方式。

回答

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 
    } 
) 
+0

錯誤處理程序不會被調用 –