Udostępnij za pośrednictwem


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.

Zobacz też