Versão atual:

Dúvida referente ao tratamento de erros no AdvPL

Boa tarde!

Possuo uma rotina via schedule que tem controle de semáforo, onde ela cria um arquivo ao iniciar, deixa ele aberto enquanto processa e fecha assim que concluí o processo. Essa rotina executa de 10 em 10 minutos.

Dessa forma, se esse processamento demorar mais de 10 minutos e outro processo iniciar, caso ele não conseguir criar o arquivo, é porque ainda existe um processamento em aberto. Assim, essa segunda tentativa é abortada.

Acontece que de vez em quando essa rotina gera alguns error logs devido a cadastro incorreto, e devido ao error log, a rotina é encerrada antes de fechar o arquivo. Então, quando novos processos tentam ser executados, eles não conseguem pois o arquivo ainda está em aberto.

Gostaria de melhorar esse processo, de modo que mesmo que gere error log, o semáforo se feche.

Minha dúvida é se consigo executar um bloco de Begin Sequence, que caso ocorra um erro no processo, eu consiga fechar o arquivo antes de finalizar a rotina.

Caso não existir, alguém sabe de alguma forma mais inteligente e eficaz para realizar este controle de semáforo?

Agradeço desde já pela atenção.

Versão (1):

Ver a versão formatada

Dúvida referente ao tratamento de erros no AdvPL

Comentário

new question