Um erro de script pode ocorrer por vários motivos. Alguns exemplos:
1) O operador esqueceu de preencher um Setpoint, e pressionou um botão;
2) O script necessitava do valor de um tag de comunicação, porém a conexão com o CLP estava interrompida no momento;
3) O script tentou escrever um registro em uma tabela, mas a conexão com o Banco estava interrompida no momento.
Na maioria das vezes, isto se torna bastante inconveniente. O operador pode não entender o que aconteceu. Não se sabe se foi uma falha irrelevante, ou um erro gravíssimo.
Porém, o vbScript dispõe de recursos para que o desenvolvedor crie sua própria lógica de tratamento de erros. Mostraremos alguns deles abaixo.
On Error Resume Next
A instrução On Error serve para indicar qual ação deve ser tomada pelo VB. No caso de usarmos o “On Error Resume Next”, a ação a ser tomada será simplesmente seguir para a próxima linha. Ou seja, o erro de script é ignorado.
Isto vale para as linhas abaixo da instrução.
On Error Goto 0
Esta instrução anula o “On Error Resume Next”. Ou seja, nas linhas abaixo do “On Error Goto 0”, o erro de script terá o tratamento tradicional: mensagem de erro e script abortado.
Objeto “Err”
Este objeto representa o erro de script. Podemos usar suas propriedades para identificar o que aconteceu de errado na execução.
Para entender melhor, vamos usar um exemplo de tratamento de script:
'A partir desta linha, os erros são ignorados On Error Resume Next Application.GetObject("Dados.TagInexistente1").Value = 1 Application.GetObject("Dados.TagInexistente2").Value = 1 Application.GetObject("Dados.TagInexistente3").Value = 1 '… '… If Err.Number <> 0 then MsgBox "Atenção: ocorreu um erro na execução deste script: " & vbNewLine &_ Err.Number & "-" & Err.Description & vbNewLine &_ "Entre em contato com o desenvolvedor responsável." End If
Exit Sub
A instrução “Exit Sub” serve para abortar o script.
Vamos mostrar um exemplo de tratamento de script, mostrando que pode-se prever o erro de script sem usar as instruções citadas anteriormente.
If Screen.Item("Setpoint1").Value = "" then MsgBox "Preencha o Setpoint antes de pressionar o botão!" Exit Sub End If '... 'resto do script '...
O exemplo acima resolveria a situação 1), citada no início do artigo.
Para mais informações sobre as instruções do vbScript, consulte o Guia de Referência do vbScript.
Seria muito interessante para o desenvolvedor o recurso básico de colocar breakpoints no script, para depurar erros que acontecem em determinado instante, ou apenas ver o que acontece com o script. Facilitaria se já viesse nativo esse recurso na instalação do Elipse!