about_Throw
Krótki opis
Opisuje słowo kluczowe Throw, które generuje błąd zakończenia.
Długi opis
Słowo kluczowe Throw powoduje błąd zakończenia. Możesz użyć słowa kluczowego Throw, aby zatrzymać przetwarzanie polecenia, funkcji lub skryptu.
Na przykład możesz użyć słowa kluczowego Throw w bloku skryptu instrukcji If, aby odpowiedzieć na warunek lub w bloku Catch instrukcji Try-Catch-Finally. Możesz również użyć słowa kluczowego Throw w deklaracji parametru, aby parametr funkcji był obowiązkowy.
Słowo kluczowe Throw może zgłaszać dowolny obiekt, taki jak ciąg komunikatu użytkownika lub obiekt, który spowodował błąd.
Składnia
Składnia słowa kluczowego Throw jest następująca:
throw [<expression>]
Wyrażenie w składni Throw jest opcjonalne. Gdy instrukcja Throw nie jest wyświetlana w bloku Catch i nie zawiera wyrażenia, generuje błąd ScriptHalted.
C:\PS> throw
Exception: ScriptHalted
Jeśli słowo kluczowe Throw jest używane w bloku Catch bez wyrażenia, ponownie zgłasza bieżący wyjątek RuntimeException. Aby uzyskać więcej informacji, zobacz about_Try_Catch_Finally.
Zgłaszanie ciągu
Opcjonalne wyrażenie w instrukcji Throw może być ciągiem, jak pokazano w poniższym przykładzie:
C:\PS> throw "This is an error."
Exception: This is an error.
Zgłaszanie innych obiektów
Wyrażenie może być również obiektem, który zgłasza obiekt reprezentujący proces programu PowerShell, jak pokazano w poniższym przykładzie:
C:\PS> throw (get-process Pwsh)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)
Aby sprawdzić błąd, możesz użyć właściwości TargetObject obiektu ErrorRecord w zmiennej automatycznej $error.
C:\PS> $error[0].targetobject
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
125 174.44 229.57 23.61 1548 2 pwsh
63 44.07 81.95 1.75 1732 2 pwsh
63 43.32 77.65 1.48 9092 2 pwsh
Możesz również zgłosić obiekt ErrorRecord lub wyjątek platformy .NET. W poniższym przykładzie użyto słowa kluczowego Throw, aby zgłosić obiekt System.FormatException.
C:\PS> $formatError = new-object system.formatexception
C:\PS> throw $formatError
OperationStopped: One of the identified items was in an invalid format.
Wynikowy błąd
Słowo kluczowe Throw może wygenerować obiekt ErrorRecord. Właściwość Exception obiektu ErrorRecord zawiera obiekt RuntimeException. Pozostała część obiektu ErrorRecord i obiektu RuntimeException różnią się w zależności od obiektu zgłaszanego przez słowo kluczowe Throw.
Obiekt RunTimeException jest owinięty w obiekt ErrorRecord, a obiekt ErrorRecord jest automatycznie zapisywany w $Error zmiennej automatycznej.
Używanie funkcji Throw do utworzenia obowiązkowego parametru
W przeciwieństwie do poprzednich wersji programu PowerShell, nie używaj słowa kluczowego Throw do sprawdzania poprawności parametrów. Zobacz about_Functions_Advanced_Parameters , aby uzyskać prawidłowy sposób.