поймать намеренно сгенерированную ошибку с помощью stop () внутри функции в tryCatch - PullRequest
0 голосов
/ 26 апреля 2020
fn2 <- function(args2){
    output
}

fn1 <- function(arg1){
            tryCatch({
                output = do.call(fn2, args2_list)
            }, error = function(e){
                if(str_detect(e$message, 'err_msg', negate = FALSE)){
                    <do something> 
                }
                stop(e$message)   
            })
        }

У меня есть некоторый код, структурированный как показано выше. fn2 выдает ошибку, но на данный момент не воспроизводимо. Я знаю только, что это за сообщение об ошибке. Поэтому я поместил tryCatch, чтобы зафиксировать ошибку и проверить, является ли это тем же сообщением, для которого мне нужно получить больше контекста и немного обработать его. Но мне нужно написать тест с использованием testthat, который проверяет, что, когда возвращается сообщение об ошибке, он выполняет обработку только в случае правильного совпадения строки, в противном случае - нет. Как я могу это сделать?
Кажется, мне нужно смоделировать fn2 и вернуть сообщение об ошибке, которое попадает в блок tryCatch. Я попытался использовать stop('err_msg') в фиктивной функции, но, похоже, он не перехватывается блоком tryCatch.

...