Я пытаюсь осуществить вложенную tryCatch в R. Код следующее:Уплотненный Try Поймайте в R
tryCatch({
a <- 2/'a'
print(a)
print("himanshu")
tryCatch({
a <- 3/'a'
print(a)
print("inner loop")
}, warning = function(war) {
print("Warning in inner tryCAtch")
}, error = function(err) {
print("Error in inner tryCAtch")
})
}, warning = function(war) {
print("Warning in outer tryCAtch")
}, error = function(err) {
print("Error in outer tryCAtch")
})
Даже если есть ошибка в внутреннем блоке сообщение наружного блока становятся распечатаны. Я хочу, чтобы на выходе, как:
Error in inner block
Error in outer block
Или вы можете добавить 'finally' в' tryCatch' и закройте все соединения в этом заявлении. – Rentrop
Хорошая точка. Я склонен не использовать 'finally', поскольку синтаксически это странный человек: обработчики' warning' и 'error' принимают функции, а' finally' принимает выражение, которое меня отбрасывает, и это редко (но не невозможно) для заявление в try-блоке, чтобы остановить выполнение с помощью чего-либо, кроме ошибки. – Jthorpe
Любая рекомендация, если у вас есть два утверждения, которые не могут быть взаимно успешными? Другими словами, tryCatch - хорошая функция для использования в качестве обобщенного оператора switch/if/else? – Atticus29