我正在尝试捕获file.remove()
引发的错误,例如当打开Excel文件时因此无法删除。
似乎R的try()
函数在这种情况下不起作用。虽然参数silent
设置为TRUE
并且没有任何内容存储到变量中,但以下代码仍然会向控制台生成错误:
removal.error <- try(file.remove("testfile.xlsx"), silent = T)
removal.error [1]错误
为什么会出现这种错误的原因或解决办法?
答案 0 :(得分:1)
try
或tryCatch
函数也没有捕获任何错误,因为remove.file
函数正常工作(如@Bhas所说)并且它会抛出FALSE
值可用于处理错误,如下所示:
write.csv2(x = data.frame(V1 = 1:10, V2 = letters[1:10]),
file = 'file.csv')
shell('start excel file.csv') # opens excel to throw the error
rem <- try(file.remove('file.csv'))
rem # [1] FALSE
if (rem == FALSE) {
shell('taskkill /F /IM excel.exe') # handle the error you pointed us
rem_2 <- file.remove('file.csv')
if(rem_2 == FALSE) { # if this was not the case, warn the user
warning(warnings())
class(rem) <- c(class(rem), "try-error") # and add try-error class to 'rem'
}
}
之后,您将能够按计划处理此问题。
OBS:逐行运行此代码,否则R
将比excel更快,并且您不会在控制台中看到任何错误。