You are on page 1of 4
VBScript ou um ntimero de erro derivado de um objeto de automagao (nuimeros de erro do objeto de automago so conhecidos como SCODE, abreviatura para cédigo de status) Para determinar a origem do ntimero de erro, use a propriedade Source. Source Nome da classe ou identificador program tico (ProgID) do objeto que causou 0 erro. Normalmente, quando 0 VBScript é responsavel pelo erro, a mensagem "Microsoft VBScript runtime error" é exibida como a origem. Se um objeto de automagao for responsavel pelo erro, vocé vera o ProglD (por exemplo, "Word.Application") Quando um script ¢ iniciado, o valor padrao 0 (sem erros) é atribuido propriedade Number. Caso um erro seja encontrado, o valor da propriedade Number é alterado. Isso permite a vocé verificar periodicamente se o script encontrou erros. Por exemplo, talvez vocé deseje verificar 0 status de erro apds tentar se conectar a um computador remoto. Se Err.Number for igual a0, nenhum erro tera ocorrido. Se Err.Number no for igual a zero, tera ocorrido algum tipo de erro e vocé podera supor que atentativa de conexdo com 0 computador remoto falhou, Como resultado, o script executard uma aco com base no fato de que o computador remoto ndo estava disponivel, Esse tipo de tratamento de erro ¢ implementado no script mostrado na listagem 14. Na linha 1 do script, o tratamento de erros é ativado com a instrucdo On Error Resume Next do VBScript. Na linha 11, 0 script usa um loop For Each para percorrer uma lista de nomes de servidor. Na linha 12, 0 script tenta se conectar a cada um desses servidores. Mas 0 que ocorre se um desses servidores no esta acessivel? Conforme observado, na linha 12 0 script tanta se conectar a um desses servidores remotos. Se a conexdo for bem-sucedida, nenhum erro sera gerado, significando que Err.Number permanecera igual a 0, Porém, se a conexdo falhar, um erro serd gerado e Err.Number sera alterado para refletir o numero atribuido ao erro, Se a tentativa de conexdo na linha 12 falhar, On Error Resume Next garantiré que o script tente executar a linha 13. Na linha 13, o script verifica o valor de Err.Number, Se 0 valor for diferente de 0 (significando que um erro ocorreu), o script exibird Err.Description e, em seguida, reiniciara o loop com o préximo nome de servidor. Se 0 valor for 0, isso significa que a conexo foi bem-sucedida. Em seguida, o script recupera o espace livre em disco do computador remoto. Listagem 14 Tratamento de erros 1 On Error Resume Next 3 Const CONVERSION_FACTOR = 1048576 4 Const WARNING_THRESHOLD = 100 5 6 If WScript.Arguments.Count = 0 Then 7 WScript.Echo "Uso: DiskSpace.vbs servidor1 [servidor2] [servidor3] 8 WScript.Quit 9 EndIf 10 11 For Each Computer In WScript.Arguments 12 Set objwmiService = GetObject("winmgmts://" & Computer) 13 If Err.Number <> 0 Then 14 WScript.Echo Computer & 15 Err.Clear 16 Else 17 Set colLogicalDisks 18 objWmiService.InstancesOf("Win32_LogicalDisk") & Err.Description 19 For Each objLogicalDisk In colLogicalDisks 20 FreeMegaB tes = objLogicalDisk.FreeSpace / CONVERSION_FACTOR 21 FreeMegaBytes = Int(FreeMegaB ytes) 22 If FreeMegaBytes < WARNING_THRESHOLD Then 23 WScript.Echo Computer & 24" tam pouco espaco em disco.” 25 End If 26 Next 27 End It 28 Next & objLogicalDisk.DevicelD & _ Se vocé executar o script da listagem 14 © um dos servidores no estiver on-line, 0 objeto Err e suas propriedades sero preenchidos como mostrado na tabela 5. Tabela 5 Propriedade Valor Err.Description The remate server machine does not exist or is unavailable Err.Number 462 Err.Source Microsoft VBScript runtime error Limpando erros Allinha 15 do script usa 0 método Clear para redefinir explicitamente as propriedades do objeto Err. Isso ¢ importante, pois caso essa redefinicao ndo ocorra, essas propriedades sé sero alteradas quando outro erro ocorrer. Os valores da propriedade no so alterados quando no ocorrem erros. Como resultado, o script pode agir de forma no apropriada com base na noc&o errénea de que ocorreu erro, Isso é 0 que acontecera se vocé no redefinir explicitamente as propriedades do objeto Err. Quando um script ¢ iniciado, 0 objeto Err apresenta o numero padrdo 0 as propriedades de descricdo e de origem vazias. Se o script ndo puder se conectar a0 computador ati-dc-01, as propriedades do objeto Err sero definidas como mostrado na tabela 5, Isso funciona conforme o esperado. Porém, o que acontece quando o computador efetua um loop e tenta se conectar ao computador atl-dc-02? Nesse caso, a tentativa & bem-sucedida e nenhum erro é gerado. No entanto, como nenhum erro foi gerado, objeto Err ainda contém os valores de propriedade mostrados na tabela 5, pois esse objeto sé 6 atualizado quando ocorre um erro. Por sua vez, o script verifica que 462 é ‘ontimero do erro, o valor restante da tentativa malsucedida de conexdo com 0 computador atl-dc-01, Como 462 no é igual a 0, o script executa uma ago com base na decisdo incorreta de que um erro ocorreu e, portanto, 0 computador ati-de-02 deve estar inacessivel, Esse mesmo problema ocorre quando o script tenta recuperar espago livre em disco no computador atl-de-03. © método Clear supera esse problema redefinindo o objeto Err para os valores padro (number igual a 0, source e description definidas como vazio). Como os valores so redefinidos, eles refletir3o corretamente o fato de que nenhum erro acorreu quando 0 script tentar recuperar espaco livre em disco para o computador atl-de-02. Aviso de isencao de responsabilidade da versao Beta Esta documentacdo é uma verso antecipada da documentacdo final e pode ser alterada substancialmente antes da versdo comercial final. Além disso, é informacao confidencial de propriedade da Microsoft Corporation. Ela é divulgada conforme descrito no acordo de ndo-divulgagdo estabelecido entre o adquirente e a Microsoft. Este documento é fornecido somente para fins informativos e a Microsoft no oferece quaisquer garantias, explicitas ou implicitas, neste documento. As informacées contidas neste documento, incluindo o URL e outras referéncias ao site da Internet na Web, esto sujeitas a alteracées sem aviso prévio. 0 usuario assume inteiro risco quanto ao uso e aos resultados do uso deste documento. Salvo indicag&o em contrério, os exemplos de empresas, organizacGes, produtos, pessoas e acontecimentos aqui mencionados so ficticios. Nenhuma associacdo com qualquer empresa, organizacao, produto, pessoa ou acontecimento real é intencional ou deve ser inferida. Obedecer a todas as leis de direitos autorais aplicaveis é responsabilidade do usuério. Sem limitar 08 direitos autorais, nenhuma parte deste documento pode ser reproduzida, armazenada ou introduzida em um sistema de recuperaco, ou transmitida de qualquer forma por qualquer meio (eletrénico, mecdnico, fotocdpia, gravacdo ou qualquer outro), ou para qualquer propésito, sem a permissao expressa, por escrito, da Microsoft Corporation ‘A Microsoft pode ter patentes ou requisicées para obtenc3o de patente, marcas, comerciais, direitos autorais ou outros direitos de propriedade intelectual que abrangem o contetido deste documento. A posse deste documento néo Ihe confere nenhum direito sobre as citadas patentes, marcas comerciais, direitos autorais ou outros direitos de propriedade intelectual, salvo aqueles expressamente mencionados em um contrato de licenca, por escrito, da Microsoft, Trabalho no publicado. © 2002 Microsoft Corporation. Todos os direitos reservados.

You might also like