gpt4 book ai didi

r - R rmongodb try()未捕获可能由错误数据引起的错误

转载 作者:行者123 更新时间:2023-12-03 08:28:54 25 4
gpt4 key购买 nike

我正在使用R和rmongodb从MongoDB NoSQL数据库中提取数据。我输入了try()逻辑来捕获由不良数据引起的问题。在大多数情况下,try()会捕获错误并跳过错误的数据对象。但是有时,它“无法”捕获它,并且我的程序停止了。下面的代码有时可以工作,但偶尔会无法进入if(inherits(...))。在调用iter1函数之前,我进行了检查以确保mongo.son.iterator.value()有效(据我所知)。实际上,在整个程序中,我在下面的调用中使用了try()。我之前尝试过tryCatch,但我认为结果是相同的。任何帮助深表感谢!

v2 <- try(mongo.bson.iterator.value(iter1)) 

if(inherits(v2, "try-error")) {
cat("mongo.bson.iterator.VALUE(iter1) ERROR ^^^^^^ , next!")
Sys.sleep(10)
next;
}

输出:
ItemName =  VH013269
before value(iter1)
type of iter1: integer
*** caught segfault ***
address 0x7402cd5, cause 'memory not mapped'
Traceback:
1: .Call(".mongo.bson.iterator.value", iter)
2: mongo.bson.iterator.value(iter1)
3: doTryCatch(return(expr), name, parentenv, handler)
4: tryCatchOne(expr, names, parentenv, handlers[[1L]])
5: tryCatchList(expr, classes, parentenv, handlers)
6: tryCatch(expr, error = function (e) {
call <- conditionCall(e)
if (!is.null(call)) {
if (identical(call[[1L]], quote(doTryCatch)))
call <- sys.call(-4L)
dcall <- deparse(call)[1L]
prefix <- paste("Error in", dcall, ": ")
LONG <- 75L
msg <- conditionMessage(e)
sm <- strsplit(msg, "\n")[[1L]]
w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w")
if (is.na(w))
w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L], type = "b")
if (w > LONG)
prefix <- paste0(prefix, "\n ")
}
else prefix <- "Error : "
msg <- paste0(prefix, conditionMessage(e), "\n")
.Internal(seterrmessage(msg[1L]))
if (!silent && identical(getOption("show.error.messages"),
TRUE)) {
cat(msg, file = stderr())
.Internal(printDeferredWarnings())
}
invisible(structure(msg, class = "try-error", condition = e))
})
7: try(mongo.bson.iterator.value(iter1))
8: eval(expr, envir, enclos)
9: eval(ei, envir)
10: withVisible(eval(ei, envir))
11: source("parcc_mci_v5.R")
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection:

最佳答案

try只能捕获R级别的错误。您看到的段错误是因为.mongo.bson.iterator.value C/C++函数正在访问它不应该访问的内存。

如果可能的话,应将此示例报告给软件包维护者。

关于r - R rmongodb try()未捕获可能由错误数据引起的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31840507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com