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.

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl schedule semaforo ou faça a sua própria pergunta.