você já viu um acidente de aplicação? Se assim for, você sabe o quão frustrante pode ficar e se você é um programador, você provavelmente estará amaldiçoando o desenvolvedor por não colocar no mecanismo de manipulação de erros Certo nele! E é exactamente disso que se trata esta peça. O tratamento de erros é parte integrante do código de uma aplicação, uma vez que apanha erros imprevistos e garante que a aplicação é terminada em segurança., Como acontece com a maioria das linguagens de programação, PowerShell também suporta um mecanismo de manipulação de erros chamado try-catch, mas antes disso, vamos aprender um pouco sobre manipulação de erros em PowerShell.
por que precisa de manipulação de erros?
uma questão bastante básica que a maioria de vocês já pode saber. Ainda assim, vamos brevemente tocá-lo para reiterar alguns pontos importantes.o tratamento de erros ajuda das seguintes formas:
- impede que uma aplicação se despenhe.
- torna mais fácil para o usuário saber que algo está errado e que eles devem entrar em contato com a equipe de suporte.,
- fornece detalhes sobre o erro e suas possíveis causas.
- ajuda na análise e na resolução dos problemas.
- dá a opção de personalizar as mensagens de erro enviadas aos utilizadores finais.
- torna mais fácil manter o seu código.
- o seu programa pode continuar a funcionar mesmo após o erro, dependendo do erro e do seu código.considerado uma boa prática de programação.
Agora que tocamos nos benefícios do tratamento de erros, vamos ver como ele pode ser implementado em PowerShell.,
tratamento de erros em PowerShell
em termos gerais, existem dois tipos de erros e eles são: erros de terminação e não-terminação.
erros de terminação e não-terminação
como o nome sugere, erros de terminação são aqueles que são críticos e terminam o programa abruptamente, enquanto os erros de não-terminação permitem que o programa para executar, mas pode dar a saída errada ou, às vezes, mesmo resultados drásticos. Agora, se você está se perguntando, erros de não-terminação são potencialmente mais perigosos do que erros de terminação, porque você não sabe que aspectos podem ser modificados.,
alguns possíveis erros de terminação estão fora da memória e erros de sintaxe, enquanto a grande parte dos erros na lógica de programação e erros inesperados caem na categoria de não-terminação.
convertendo erros de não-terminação para erros de terminação
como programador, você pode dizer ao PowerShell para tratar os erros de não-terminação como erros de terminação, de modo que o programa pára se ele encontrar esse erro em particular. Esta mudança ajuda você a lidar com o erro usando o bloco PowerShell try-catch porque por padrão os erros de não-terminação não podem ser tratados com o bloco try-catch.,
para converter erros de não-terminação em erros de terminação, use um parâmetro chamado ErrorAction. Cada cmdlet suporta este parâmetro e é projetado para dizer ao programa que ação ele deve tomar quando ele encontra um erro. ErrorAction vem com as seguintes opções
- Stop: isto pára o programa e trata-o como um erro de terminação.
- Continue: permite que o programa continue e o erro é mostrado.
- SilentlyContinue: o programa funciona e não são apresentados erros.
- ignorar: ignora o erro e continua.,
- inquirir: mostra o erro e verifica se deve continuar.
- suspensão: isto pode ser usado num fluxo de trabalho PowerShell do Windows. A limitação é que não pode suspender funções avançadas.
a sintaxe para a ErrorAction é:
Este comando muda um erro não-terminante para um erro terminante, para que possa lidar com ele.
construindo um bloco de try-catch
Uma vez que você tenha um erro de terminação ou tenha convertido um não-terminante para um erro de terminação, você pode lidar com ele usando PowerShell try-catch block.,
A sintaxe genérica é:
neste exemplo, os dados do ficheiro está armazenado na variável $e se houver um erro, o código fica para o bloco catch e exibe a mensagem. O exemplo acima é um básico, projetado para lhe dar uma idéia da sintaxe e uso. No mundo real, porém, você vai usar este bloco PowerShell try-catch para obter insights sobre o erro e tomar medidas em conformidade.,
aplicações práticas do bloco de tração PowerShell
pode aceder ao registo de erros dentro do bloco de captura. Na verdade, a mensagem de erro é armazenada na variável atual $_. Você pode fazer qualquer coisa com este registro de erro, Como processar o erro, exibir um aviso, e muito mais. Um atributo poderoso da variável atual é a exceção, pois a idéia é saber mais sobre os eventos inesperados que fizeram com que o programa parasse. Além disso, a própria exceção vem com muitos atributos como ItemName, GetType, mensagem, etc.,,
Por exemplo:
try{$variable = Get:content \user.txt:ErrorAction Stop}catch{write:output $_Exception.Message}
Agora que o básico é claro, vamos passar para a parte avançada.
pode utilizar o bloco de captura para apanhar excepções específicas, desde que as conheça ou antecipe. Por exemplo, digamos que você deseja que uma determinada mensagem a ser exibida se o arquivo não for encontrado e outras mensagens para outras exceções, seu código deve ficar assim:
Alguns pontos a considerar quando usando try-catch
tenha em mente os seguintes pontos, enquanto usando o PowerShell bloco try-catch.,
- não deve haver código entre os suspensórios terminantes do bloco de tentativa e o comando de captura. Em outras palavras, a palavra “catch” deve estar imediatamente na próxima linha após os suspensórios de fecho do bloco de tentativa
- Este bloco de tentativa-catch PowerShell é mais útil para lidar com erros que você antecipa pode acontecer no programa.o bloco de captura apanhará qualquer excepção atirada para dentro do bloco de ensaio, independentemente da sua origem.
- PowerShell try-catch command is a convenient alternative to multiple if statements.,
- o bloco de teste pode ser seguido por qualquer número de blocos de captura, mas eles devem ser consecutivos, sem qualquer outro código no meio.
finalmente bloqueie
há algo chamado um bloco final que você pode usar com tentativa de captura. Este é um opcional e não tem que ser usado em todos os momentos. Este bloco irá executar o código mencionado dentro dele, independentemente de haver ou não um erro. Este bloco deve vir logo após o fecho do último bloco de pesca.,
Por exemplo:
no exemplo acima, um item será adicionado no arquivo de log cada vez que uma tentativa é feita para acessar o arquivo, independentemente se o arquivo foi encontrado ou não.
Try-catch: Try it out and prevy crashes
o manuseio de erros é uma parte importante de qualquer programa, uma vez que evita que a aplicação de bater e ajuda você a analisar a possível causa do erro. PowerShell try-catch block é uma forma poderosa de capturar erros de terminação, para que você possa lidar com eles com segurança sem causar um acidente., Ele ajuda com a análise detalhada e uma compreensão do problema também. Por estas razões, é um must-have em seus scripts PowerShell.
Leave a Reply