Tôi đang viết một trường hợp thử nghiệm cho một hàm R kiểm tra xem có lỗi nào bị ném và bị bắt chính xác tại một điểm nhất định trong hàm hay không. gặp khó khăn khi thử nghiệm để tiếp tục khi một lỗi được ném trong khi thực hiện trong withCallingHandlers (...). Tôi đang sử dụng cách tiếp cận này:Làm thế nào để tiếp tục hoạt động khi lỗi được đưa vào withCallingHandlers trong R
counter <- 0
withCallingHandlers({
testingFunction(df0, df1)
testingFunction(df2, df3)
testingFunction(df4, df5)
}, warning=function(war){
print(paste(war$message))
}, error=function(err){
print(paste(err$message))
if(err$message == paste("The function should throw this error message",
"at the right time.")){
counter <<- counter + 1
}
})
stopifnot(counter == 2)
Vấn đề tôi gặp phải là tập lệnh thoát sau khi lỗi đầu tiên được bắt thành công và tôi không chắc chắn cách xử lý lỗi sao cho sau nó bị bắt, withCallingHandlers chỉ đơn giản là tiếp tục vào phần tiếp theo của việc thực hiện nó. Tôi hiểu rằng nó có cái gì đó để làm với một đối tượng khởi động lại nhưng tôi không chắc chắn làm thế nào để sử dụng chúng một cách chính xác. Có ai biết làm thế nào tôi có thể thao tác các mã trên để thực hiện withCallingHandlers (...) tiếp tục ngay cả khi một lỗi được bắt?
Tuyệt vời, cảm ơn rất nhiều. – Decave