failure
Tratamento de erros e gerenciamento de exceções
Importação
_ <- fat.failure
Métodos
Nome | Assinatura | Breve descrição |
---|---|---|
trap | (): Void | Aplicar manipulador genérico de erro genérico |
trapWith | (handler: Method): Void | Definir um manipulador para erros no contexto |
untrap | (): Void | Desarmar o manipulador para erros no contexto |
Notas de uso
Quando um erro é criado se um manipulador de erro for encontrado, buscando do contexto de execução interno para externo, o manipulador que envolve a falha é invocado automaticamente com esse erro como argumento e o contexto de chamada é encerrado com o valor de retorno do manipulador de erro.
não é possível definir um manipulador para o escopo global
trapWith
Este método vincula um manipulador de erros ao contexto do site de chamada, por exemplo quando usado dentro de um método, ele apenas protegerá a lógica executada dentro do corpo desse método.
Exemplo
Defina um manipulador de erro que imprima o erro e saia:
console <- fat.console
system <- fat.system
sdk <- fat.sdk
simpleErrorHandler = (error) -> {
console.log(error)
sdk.printStack(10)
system.exit(system.failureCode)
}
Finalmente, use o método trapWith
para atribuir o manipulador de erro:
failure <- fat.failure
failure.trapWith(simpleErrorHandler)
Trap it!
Você pode lidar com erros esperados ou deixar passar o inesperado:
failure <- fat.failure
_ <- fat.type.Error
MyError = Error
errorHandler = (error) -> {
error == MyError => 0 # handle (expected)
_ => error # pass through (unexpected)
}
unsafeMethod = (n) -> {
failure.trapWith(errorHandler)
n < 10 ? MyError('arg is less than ten')
n - 10
}
isso só funciona se a opção
-e / continuar em caso de erro
não estiver definida
Neste caso, o programa não travará se você chamar unsafeMethod(5)
, mas se você comentar a linha trapWith
, verá que ele trava com MyError
.