Už jste někdy viděli pád aplikace? Pokud ano, víte, jak frustrující to může dostat, a pokud jste programátor, budete pravděpodobně proklínat vývojáře za to, že v pravém mechanismus zpracování chyb! A to je přesně to, o čem je tento kus. Manipulace s chybami je nedílnou součástí kódu aplikace, protože zachycuje nepředvídané chyby a zajišťuje bezpečné ukončení aplikace., Stejně jako u většiny programovacích jazyků, PowerShell také podporuje zpracování chyb mechanismus zvaný try-catch, ale před tím, pojďme se dozvědět něco o zpracování chyb v PowerShell.
proč potřebujete zpracování chyb?
docela základní otázka, kterou většina z vás možná už ví. Přesto se na to krátce dotkneme, abychom zopakovali některé důležité body.
zpracování chyb pomáhá následujícími způsoby.
- zabraňuje pádu aplikace.
- usnadňuje uživateli vědět, že něco není v pořádku a že by se měli obrátit na tým podpory.,
- poskytuje podrobnosti o chybě a jejích možných příčinách.
- pomáhá s další analýzou a opravou problémů.
- dává možnost přizpůsobit chybové zprávy odeslané koncovým uživatelům.
- usnadňuje údržbu kódu.
- váš program by mohl pokračovat v práci i po chybě, v závislosti na chybě a kódu.
- považována za dobrou programovací praxi.
Nyní, když jsme se dotkli výhod manipulace s chybami, uvidíme, jak může být implementován v PowerShell.,
zpracování Chyb v PowerShell
Obecně řečeno, existují dva typy chyb, a to jsou: ukončení a non-ukončení chyby.
Ukončení a non-ukončení chyb
Jak už název napovídá, zastavení chyby jsou ty, které jsou kritické a ukončit program náhle, zatímco non-ukončení chyby umožnit program spustit, ale může dát špatný výkon, nebo někdy i drastické výsledky. Nyní, pokud jste zvědaví, non-terminating chyby jsou potenciálně nebezpečnější než ukončení chyby, protože nevíte, jaké aspekty mohou být upraveny.,
některé možné chyby ukončení jsou mimo chyby paměti a syntaxe, zatímco velká část chyb v programovací logice a neočekávané chyby spadají do nekončící Kategorie.
Konverze non-ukončení chyby ukončením chyb
Jako programátor, můžete říct, PowerShell k léčbě non-ukončení chyby jako ukončení chyby, takže program se zastaví, pokud zjistí, že konkrétní chybě. Tato změna vám pomůže zvládnout chybu pomocí bloku PowerShell try-catch, protože ve výchozím nastavení nelze s ukončujícími chybami zacházet s blokem try-catch.,
Chcete-li převést nekončící chyby na ukončující chyby, použijte parametr nazvaný ErrorAction. Každý cmdlet podporuje tento parametr a je navržen tak, aby řekl programu, jakou akci by měl podniknout, když narazí na chybu. Chyba přichází s následujícími možnostmi
- Stop: tím se program zastaví a považuje se za ukončující chybu.
- pokračovat: umožňuje programu pokračovat a zobrazí se chyba.
- SilentlyContinue: program běží a nejsou zobrazeny žádné chyby.
- ignorovat: ignoruje chybu a pokračuje.,
- dotaz: zobrazí chybu a zkontroluje, zda má pokračovat.
- pozastavit: to lze použít v pracovním postupu Windows PowerShell. Omezení spočívá v tom, že nemůže pozastavit pokročilé funkce.
syntaxe pro ErrorAction je:
$variable = Get:content \user.txt:ErrorAction Stop
Tento příkaz změní non-ukončení chybová do ukončení, takže můžete zvládnout to.
Stavební try-catch bloku
Jakmile budete mít ukončení chyby nebo převést non-ukončení jednoho do ukončení error, můžete to zvládnout pomocí PowerShell try-catch bloku.,
obecná syntaxe je:
V tomto příkladu dat ze souboru je uložen v $proměnná, a pokud je chybový kód dostane do bloku catch a zobrazí zprávu. Výše uvedený příklad je základní, navržen tak, aby vám představu o syntaxi a použití. V reálném světě však použijete tento blok PowerShell try-catch, abyste získali informace o chybě a podle toho podnikli kroky.,
praktické aplikace PowerShell try-catch block
můžete přistupovat k záznamu chyb uvnitř bloku úlovku. Ve skutečnosti je chybová zpráva uložena v aktuální proměnné $_. S tímto záznamem chyb můžete udělat cokoli, například analyzovat chybu, zobrazit varování a další. Výkonným atributem aktuální proměnné je výjimka, protože myšlenkou je Dozvědět se více o neočekávaných událostech, které způsobily zastavení programu. Také výjimka sama o sobě přichází s mnoha atributy, jako je ItemName, GetType, Message atd.,,
například:
try{$variable = Get:content \user.txt:ErrorAction Stop}catch{write:output $_Exception.Message}
nyní, když jsou základy jasné, přejdeme k pokročilé části.
blok úlovku můžete použít k zachycení konkrétních výjimek, pokud je znáte nebo očekáváte. Například, řekněme, že chcete konkrétní zpráva se zobrazí, pokud soubor není nalezen a jiné zprávy pro další výjimky, váš kód by měl vypadat takhle:
Některé body, aby zvážila při použití try-catch
Mějte na paměti následující body, zatímco pomocí PowerShell try-catch bloku.,
- mezi koncovými závorkami bloku try a příkazem catch by neměl být žádný kód. Jinými slovy, slovo „úlovek“ by měly být hned v další linii po uzavření závorky try blok
- Tento PowerShell try-catch blok je nejvíce užitečné zpracovat chyby, které očekáváte, se může stát v programu.
- blok úlovku zachytí jakoukoli výjimku hozenou uvnitř bloku try bez ohledu na jeho původ.
- příkaz PowerShell try-catch je vhodnou alternativou k více příkazům if.,
- pokusný blok může následovat libovolný počet bloků úlovku, ale měly by být po sobě jdoucí bez jiného kódu mezi nimi.
nakonec blokovat
existuje něco, co se nazývá konečně blok, který můžete použít s try-catch. Jedná se o volitelný a nemusí být používán po celou dobu. Tento blok provede kód uvedený uvnitř bez ohledu na to, zda došlo k chybě nebo ne. Tento blok by měl přijít hned po uzavření závor posledního bloku úlovku.,
například:
ve výše uvedeném příkladu bude v souboru protokolu při každém pokusu o přístup k souboru připojena položka, bez ohledu na to, zda byl soubor nalezen nebo ne.
Try-catch: Vyzkoušejte to a odvraťte pády
manipulace s chybami je důležitou součástí jakéhokoli programu, protože zabraňuje zhroucení aplikace a pomáhá vám analyzovat možnou příčinu chyby. PowerShell try-catch block je silný způsob, jak zachytit končící chyby, takže je můžete bezpečně zvládnout, aniž byste způsobili havárii., Pomáhá s podrobnou analýzou a pochopením problému. Z těchto důvodů je nutné mít ve skriptech PowerShell.
Leave a Reply