Альтернатива - 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
и, если он наследуется от класса "try-error"
, мы знаем, что страница не может быть извлечена, и выдаем сообщение, указывающее на это. В противном случае мы можем напечатать arq
.