Skip to content

Exceções

Leonel Sanches da Silva edited this page Aug 30, 2023 · 5 revisions

Em programação, é natural haver partes da execução que causam eventos problemáticos. Estes são chamados de exceções e pedem uma resolução pelo desenvolvedor.

Um exemplo comum de exceção é uma operação entre tipos diferentes. Por exemplo:

escreva(1 > "2")

Neste caso, o Interpretador Delégua levanta uma exceção do tipo ErroEmTempoDeExecucao, e a mensagem "Operadores precisam ser números". Isso porque não é possível usar o operador maior para um literal inteiro e um literal texto.

Exceções são bastante comuns em qualquer código de qualquer linguagem. Em Delégua, existe uma construção especial, chamada tente ... pegue ... finalmente, ou apenas tente, que executa esperando uma exceção dentro do escopo:

tente {  
  1 > "2" // Aqui ocorre uma exceção

  escreva("sucesso")
} pegue {
  escreva("Ocorreu uma exceção.")
} finalmente {
  escreva("Ocorrendo exceção ou não, eu sempre executo")
}

Se você precisa saber qual foi o erro, pode usar pegue contendo um parâmetro como argumento:

tente {  
  1 > "2" // Aqui ocorre uma exceção

  escreva("sucesso")
} pegue (erro) {
  escreva(erro) // Este comando irá executar, escrevendo o erro na saída padrão.
}

Esse parâmetro em pegue não é suportado em Égua Clássico.

falhar

Se por algum motivo o código precisa provocar uma exceção, temos o comando falhar, que cria uma exceção no ponto onde é executado, interrompendo a execução:

falhar "Um erro econteceu aqui."

Ou seja:

tente {  
  falhar "Um erro econteceu aqui."

  escreva("sucesso") // Não escreve, como nos exemplos anteriores.
} pegue (erro) {
  escreva(erro) // Escreve "Um erro econteceu aqui."
}