Usina BRAdvPL Guia
Entrar
← Todos os tópicos
GUIA PRÁTICOEm revisão

Tratamento de erros com BEGIN SEQUENCE e RECOVER

Controla interrupção e recuperação do fluxo de execução.

Tratamento de erros com BEGIN SEQUENCE e RECOVERAdvPL
01 · VISÃO GERAL

Visão geral

BEGIN SEQUENCE delimita instruções; Break desvia para RECOVER e USING recebe a expressão enviada. O exemplo usa Break explícito com marcador fictício. Para redirecionar erros de execução é necessário um tratamento compatível, como ErrorBlock que executa Break; a sequência não captura automaticamente toda falha fatal. Ao trocar ErrorBlock, guardar e restaurar o anterior, sem RETURN que pule essa limpeza. Recuperar fluxo não reverte transação, libera lock ou fecha recurso automaticamente. Essas responsabilidades precisam ser tratadas no contexto proprietário. (Fontes: refs. 1–1.)

03 · EXEMPLO PRÁTICO

Exemplo comentado

#Include "Protheus.ch"

User Function Ed696()
    Local xErro
    Begin Sequence
        // Marcador ficticio para observar o desvio, sem provocar erro de dados.
        Break("ED696")
    Recover Using xErro
        ConOut("Recuperacao: "+cValToChar(xErro))
    End Sequence
Return Nil
Resultado esperado

Exibe Recuperacao: ED696 no fluxo proposto. Não demonstra captura de erro fatal nem rollback. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

BOAS PRÁTICAS
  • Não silenciar falhas retornando sucesso. Preservar diagnóstico sem expor segredos e testar limpeza nos caminhos de erro.
  • Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. BEGIN SEQUENCE ... END. Break, Recover Using e ErrorBlock. Consulta em 2026-10-28.
Situação
Em revisão
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha