I have a generic function to catch all exceptions included in my package logR::tryCatch2 defined as:
tryCatch2 <- function(expr){
V=E=W=M=I=
Late answer but I have found that rlang::interrupt
can throw "user interrupts":
interrupt() allows R code to simulate a user interrupt of the kind that is signalled with Ctrl-C. It is currently not possible to create custom interrupt condition objects.
Source: ?rlang::interrupt
Internally it calls the R API function Rf_onintr
which is an alias for the function onintr.
Basically an interrupt
is "just" a special condition with these classes:
interrupt
and condition
(see the R source code).
If you just want to simulate an interrupt to test tryCatch
ing (without the need to interrupt a running R statement) it suffice to throw a condition with these classes via signalCondition
:
interrupt_condition <- function() {
structure(list(), class = c("interrupt", "condition"))
}
tryCatch(signalCondition(interrupt_condition()),
interrupt = function(x) print("interrupt detected"))
# [1] "interrupt detected"