...
Bloco de código | ||
---|---|---|
| ||
BEGIN SEQUENCE ... < instruções > ... [ BREAK [ < expressão > ] ] ... < instruções > ... [ RECOVER [ USING < variável > ] ] ... < instruções > ... END SEQUENCE |
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
BEGIN SEQUENCE | Expressão | Define o inicio do bloco de código contendo o controle de erro | Sim | Não |
BREAK < expressão > | Expressão | Desvia o fluxo de execução para a linha de instrução imediatamente seguinte ao próximo comando RECOVER, se houver um especificado. Caso não exista, o fluxo de execução será desviado para a linha de instrução imediatamente seguinte ao comando END SEQUENCE. A expressão ( < expressão > ) é um valor que será atribuído à variável ( < variável > ) especificada pela cláusula USING do comando RECOVER. | Não | Não |
RECOVER USING < variável > | Variável | Define um ponto de recuperação, dentro do bloco de sequência, para o qual o fluxo de execução será desviado após a execução de um comando BREAK. Se a cláusula USING < variável > for especificada, esta variável receberá o valor fornecido pelo comando BREAK. | Não | Não |
END SEQUENCE | Expressão | Define o fim do bloco de sequência. Após a execução do comando BREAK, o fluxo de execução é desviado para a primeira linha de instrução após o comando END SEQUENCE, caso não tenha sido especificado um comando RECOVER dentro da sequência. | Sim | Não |
03. EXEMPLOS
A estrutura típica do comando BEGIN SEQUENCE é exemplificada abaixo:
...
Bloco de código |
---|
user function Example // Define um code block de tratamento de erro e guarda o code block atual Local oError := Errorblock({|e| Break(e) }) Begin Sequence var := var+1 // variavel não existe, logo, vai dar erro nesta linha conout( "Recover... Isto NÃO DEVE ser executado, de acordo com o break lançado no ErrorBlock" ) return .T. Recover conout("Isto DEVE ser executado... entrou no recover") End Sequence conout( "Isto DEVE ser executado" ) // Restaura o code block de tratamento de erro original ErrorBlock( oError ) Return 0 |