Bom dia pessoal,
Como faço para minha rotina executar uma função, toda vez que ocorrer um erro, "que normalmente fecharia o programa"?
Obrigado pessoal, e aguardo.
Bom dia pessoal,
Como faço para minha rotina executar uma função, toda vez que ocorrer um erro, "que normalmente fecharia o programa"?
Obrigado pessoal, e aguardo.
Por exemplo da forma que está como exemplo na documentação do produto usando a função (vl-catch-all-apply)
Exemplo:
"(defun catch-me-if-you-can (dividend divisor / errobj)
(setq errobj (vl-catch-all-apply '/ (list dividend divisor)))
(if (vl-catch-all-error-p errobj)
(progn (print (strcat "An error occurred: " (vl-catch-all-error-message errobj) ) )
(prompt "Do you want to continue? (Y/N) -> ")
(setq ans (getstring)) (if (equal (strcase ans) "Y") (print "Okay, I'll keep going") ) ) (print errobj) )
(princ) )"
Esta função aceita dois números como argumentos e usa vl-catch-all-apply para dividir o primeiro numero pelo segundo. A função vl-catch-all-error-p vai então determinar se o valor que é passado por vl-catch-all-apply é um objecto de erro ou não, se o valor for um erro então catch-me-if-you-can invoca vl-catch-all-error-message para obter a mensagem do objecto de erro e de seguida continua com a execução do programa! O que pode ser complicado é em programas muito grandes e ou complexos determinar onde pode eventualmente acontecer erros que parem o programa, nestes só com muitos testes dos programadores e de vários utilizadores é que se pode descobrir esses erros e a melhor forma de tratar deles, pois pode ser um pouco complicado colocar em cada função uma outra função para tratar de erros!
Cumprimentos