detectar un error y luego bifurcar la lógica

¿Cómo escribo el código R que me permite ejecutar una ruta diferente en mi código si ocurre una condición de error? Estoy usando una función que tiende a arrojar un error. Cuando cumple una condición de error, me gustaría ejecutar una función diferente. Aquí hay un ejemplo específico:

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)

la función pJohnson debería fallar con el siguiente error:

 Error in pJohnson(0.18, parms) :
 Sb values out of range.

Puedo silenciar el error usando:

try( pJohnson(.18, parms), silent=T)

pero lo que realmente quiero hacer es ejecutar la funciónalternativeFunction() SipJohnson(.18, parms) devuelve un error

Parece que elwithCallingHandlers() La función debería ayudarme, pero no puedo entender cómo capturar el error y hacer que ejecute elalternativeFunction() solo ante una condición de error.

Respuestas a la pregunta(2)

Su respuesta a la pregunta