mensagem de erro do script

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

Lazyyy
Posts: 51
Joined: 27 Jan 2020, 21:56

mensagem de erro do script

26 Oct 2020, 11:40

boa tarde, alguém sabe me dizer se é possível remover a mensagem de erro do script? ela se parece com um MsgBox, vi na documentação o comando #Warn mas não funcionou aqui, depois vi alguns exemplos com o comando Try mas não entendi muito bem como ele funciona

precisava remover esta mensagem de erro pois ela "vaza" um pedacinho da source do script mesmo ele estando compilado

Image
Attachments
image.png
image.png (13.49 KiB) Viewed 140 times
User avatar
Gio
Posts: 1067
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: mensagem de erro do script

26 Oct 2020, 17:40

Boa tarde Lazyyy.

Primeiro, vamos separar os tipos de erros que um script pode apresentar.

O primeiro tipo é um erro que impede o script de sequer iniciar a execução. Por exemplo, um script em que uma das linhas foge totalmente à sintaxe da linguagem e que por isso não pode ser interpretada pelo script. Neste caso o interpretador irá levantar um erro durante o processo de lexing, antes mesmo de executar sequer a primeira linha do script. Por isso, se você testar sempre as novas versões do seu programa antes de enviar ao cliente, este tipo de erro praticamente não terá chance de ocorrer na tela do cliente.

Exemplo: No script abaixo, a terceira linha (asdasd) não tem o menor sentido para o interpretador, e por isso, se você tentar rodar o script do jeito que está, ele não será sequer iniciado.

Code: Select all

var := 10
var2 = exemplo
asdasd
:arrow: O que importa é o seguinte, o primeiro tipo de erro pode ser administrado usando a diretiva #ErrorStdOut. Com essa diretiva em funcionamento, o interpretador vai encontrar o erro e impedir a execução do script, mas ao invés de mostrar uma caixa de mensagem com o erro para o usuário, ele vai enviar o erro para o error stream. É importante dizer que isso não é a mesma coisa que esconder o erro, pois embora o script não exiba nada se o erro ocorrer quando o usuário o ativou através de um clique duplo, o erro pode ser recuperado através de uma simples linha de comando. Mas como disse: este tipo de erro normalmente só ocorre durante o desenvolvimento do script, portanto não é algo com o qual você deva se preocupar (basta testar seus scripts sempre antes de enviar ao cliente. Se ele iniciar a execução das linhas, não haverá este tipo de erro).

O segundo tipo de erro é um erro que ocorre durante a execução do script. Um exemplo foi esse que você postou: tentar fazer o comando run abrir um arquivo que não existe. Este tipo de erro difere do outro porque o script só tem como saber que o arquivo não existe quando tentar executá-lo, e por isso o script estará de fato em execução quando o erro for encontrado (imagine que você pode criar uma tela onde o usuário diz qual arquivo abrir, portanto, a sintaxe pode estar válida para todos os efeitos, mas ao mesmo tempo, o comando pode ser impossível se o arquivo escolhido não existir).

:arrow: Este segundo tipo de erro (que ocorre durante a execução do script) pode ser administrado usando try, throw e catch. Estes comandos funcionam da seguinte forma:

1. Try
O comando Try permite que você crie um bloco de linhas de códigos imediatamente subsequente que não apresentarão mensagem de erro caso haja um erro do segundo tipo.

Exemplo:

Code: Select all

Try
{
Run, %A_ScriptDir%/exemplodearquivoinexistente.exe ; Este arquivo não existe, mas apesar de a linha tentar (try) executar, o erro não será exibido.
}
2. Catch
O comando catch permite que você crie um bloco de linhas de códigos imediatamente subsequente que se conecta a um try anterior e que executa caso o try encontre um erro do segundo tipo. Também é possível indicar uma variável para receber um objeto que conterá os dados do erro.

Code: Select all

try  ; Attempts to execute code.
{
	Run, %A_ScriptDir%/exemplodearquivoinexistente.exe
}
catch ERROS_ENCONTRADOS
{
	MsgBox % "Houve um erro na execução do comando Run. Specificamente:" ERROS_ENCONTRADOS.message ; Esta msgbox executa caso o Run acima encontre um erro (e ele vai encontrar porque o arquivo exemplodearquivoinexistente.exe não existe).
}
3. Throw
O comando throw permite disparar contra um bloco catch, executando-o, bem como enviar uma mensagem. Seu uso é para criar mensagens de erros customizadas e aproveitar o bloco catch para administrar erros que na verdade são indicados pelo programador (por exemplo, poderíamos usar uma consulta à função FileExist() e constatando que o arquvo não existe, ativar o mesmo bloco catch, ainda que não tenha havido um erro do comando run por não termos tentando executar o arquivo.


:arrow: Em outras palavras, se tudo o que você quer é esconder as mensagens de erros, use #ErrorStdOut e ao mesmo tempo, coloque as linhas de comandos que você vai usar no script dentro de blocos try.

Espero ter ajudado, se ainda tiver alguma dúvida, basta postar abaixo.

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 12 guests