capturando um erro e depois ramificando a lógica

Como escrevo código R que me permite executar um caminho diferente no meu código se ocorrer uma condição de erro? Estou usando uma função que tende a gerar um erro. Quando ele encontra uma condição de erro, eu gostaria de executar uma função diferente. Aqui está um exemplo 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)

a função pJohnson deve falhar com o seguinte erro:

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

Eu posso fazer o erro ficar silencioso usando:

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

mas o que eu realmente quero fazer é executar a funçãoalternativeFunction() E sepJohnson(.18, parms) retorna um erro.

Parece que owithCallingHandlers() função deve me ajudar, mas não consigo descobrir como capturar o erro e fazê-lo executar oalternativeFunction() somente mediante uma condição de erro.

questionAnswers(2)

yourAnswerToTheQuestion