catching an error and then branching logic
error-handling, r
Solution
t <- try(pJohnson(.18, parms))
if("try-error" %in% class(t)) alternativeFunction()
Problem
How do I write R code that allows me to execute a different path in my code if an error condition happens? I'm using a function that tends to throw an error. When it meets an error condition I would like to execute a different function. Here's a specific example: ``` require(SuppDists) parms <- structure(list(gamma = -0.841109044800762, delta = 0.768672140584442, xi = -0.359199299528801, lambda = 0.522761187947026, type = "SB"), .Names = c("gamma", "delta", "xi", "lambda", "type")) pJohnson(.18, parms) ``` the pJohnson function should fail with the following error: ``` Error in pJohnson(0.18, parms) : Sb values out of range. ``` I can make the error go silent by using: ``` try( pJohnson(.18, parms), silent=T) ``` but what I really want to do is execute the function `alternativeFunction()` if `pJohnson(.18, parms)` returns an error. It seems like the `withCallingHandlers()` function should help me out, but I can't figure out how to capture the error and make it run the `alternativeFunction()` only upon an error condition.