#r
#r
Вопрос:
Я хотел бы знать, как я могу проверить, доступен ли html. Если это не так, я хотел бы контролировать возврат, чтобы избежать остановки скрипта по ошибке. Пример:
arq <- readLines("www.pageerror.com.br")
print(arq)
Ответ №1:
Альтернативой является try()
то, что с ним проще работать, trycatch()
но он не такой функциональный. Вам также может потребоваться подавить предупреждения, поскольку R сообщит, что он не может разрешить адрес.
Вы хотите что-то подобное в своем скрипте:
URL <- "http://www.pageerror.com.br"
arq <- try(suppressWarnings(readLines(con <- url(URL))), silent = TRUE)
close(con) ## close the connection
if(inherits(arq, "try-error")) {
writeLines(strwrap(paste("Page", URL, "is not available")))
} else {
print(arq)
}
silent = TRUE
Бит подавляет сообщение об ошибках (если вы оставите это значение по умолчанию FALSE
, то R сообщит об ошибке, но не прервет сценарий). Мы оборачиваем потенциально вызывающий ошибку вызов функции try(...., silent = TRUE)
, suppressWarnings()
который используется для подавления предупреждений. Затем мы проверяем класс возвращаемого объекта arq
, и если он наследуется от class "try-error"
, мы знаем, что страница не может быть восстановлена, и выдаем сообщение, указывающее на это. В противном случае мы можем печатать arq
.
Ответ №2:
?tryCatch
— Сказал Нуфф. <— За исключением, по-видимому, нет, потому что pageweaver требует больше символов в ответе. Итак, «Если полтора цыпленка снесут полтора яйца за полтора дня, сколько яиц снесут девять цыплят за девять дней?» Хорошо, достаточно долго.
Комментарии:
1. -1 определенно не «nuff сказал», потому
?trycatch
что не возвращает никакой информации, а использоватьtryCatch
ее непросто — пример был бы полезен.2. @Abe — для этого и предназначен текст внизу
?tryCatch
выходных данных.3. нижняя часть
?tryCatch
все еще оставляет меня (и, по-видимому, многих других) в поисках ответов на SO.