Как предотвратить выполнение дальнейших шагов кода после ошибки?

Как я могу убедиться, что после того, как я "поймаю"? ошибка и зарегистрируйте ее, дальнейшие шаги кода не выполняются (я не хочу использовать q ())?

Мой сценарий использования выглядит следующим образом: - сделать некоторые расчеты - если произошла ошибка, зарегистрируйте ее - прекратить выполнение любых дальнейших шагов в коде

Я попытался решить эту проблему с помощью приведенного ниже примера кода (вместо функции записи в журнал используется print):

handleMySimpleError<-function(e, text) {
    # Let's log the error
    print(paste0(text, ": ", e))
    # This should stop execution of any further steps but it doesn't
    stop("Now, stop. For real.")
}

print("Starting execution...")
tryCatch(
    stop("My simple error."),
    error=function(e) {handleMySimpleError(e, "could not finish due to")}, finnaly=NULL
)
print("Successfully ended execution...")

Я почему-то надеялся, что print (& quot; Успешно завершенное выполнение ... & quot;) никогда не выполнится ... Но вот вывод, который я получаю:

> handleMySimpleError<-function(e, text) {
+   # Let's log the error
+   print(paste0(text, ": ", e))
+   # This should stop execution of any further steps but it doesn't
+   stop("Now, stop. For real.")
+ }
>  
> print("Starting execution...")
[1] "Starting execution..."
> tryCatch(
+   stop("My simple error."),
+   error=function(e) {handleMySimpleError(e, "could not finish due to")}, finnaly=NULL
+ )
[1] "could not finish due to: Error in doTryCatch(return(expr), name, parentenv, handler): My simple error.\n"
Error in handleMySimpleError(e, "could not finish due to") : 
Now, stop. For real.
> print("Successfully ended execution...")
[1] "Successfully ended execution..."

Как предотвратить выполнение печати (& quot; Успешно завершенное выполнение ... & quot;)? Какова правильная стратегия остановки обработки кода после регистрации ошибки в функции обработчика ошибок?

Ответы на вопрос(1)

Ваш ответ на вопрос