about_Throw

Krótki opis

Opisuje słowo kluczowe Throw, które generuje błąd kończący.

Długi opis

Słowo kluczowe Throw powoduje błąd powodujący zakończenie. Możesz użyć słowa kluczowego Throw, aby zatrzymać przetwarzanie polecenia, funkcji lub skryptu.

Na przykład można użyć słowa kluczowego Throw w bloku skryptu instrukcji If, aby odpowiedzieć na warunek, lub w bloku Catch instrukcji Try-Catch-Finally. Można 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 $error zmiennej automatycznej.

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żna również zgłosić obiekt ErrorRecord lub wyjątek .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, który zgłasza słowo kluczowe Throw.

Obiekt RunTimeException jest opakowany w obiekt ErrorRecord, a obiekt ErrorRecord jest automatycznie zapisywany $Error zmiennej automatycznej.

Tworzenie obowiązkowego parametru przy użyciu funkcji Throw

W przeciwieństwie do poprzednich wersji programu PowerShell, nie używaj słowa kluczowego Throw do walidacji parametrów. Zobacz about_Functions_Advanced_Parameters, aby uzyskać prawidłowy sposób.

Zobacz też