Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Krótki opis
throw Opisuje słowo kluczowe, które domyślnie generuje błąd zakończenia skryptu.
Długi opis
Słowo throw kluczowe domyślnie powoduje błąd zakończenia skryptu. Słowo kluczowe umożliwia throw zatrzymanie przetwarzania polecenia, funkcji lub skryptu.
W przeciwieństwie do błędów zakończenia instrukcji słowo throw kluczowe odwija cały stos wywołań. Wykonanie zostanie zatrzymane całkowicie, chyba że błąd zostanie przechwycony przez blok lub trap instrukcjętry/catch.
Uwaga / Notatka
$ErrorActionPreference może pominąć throw. Gdy jest ustawiona wartość SilentlyContinue lub Ignore, błąd nie jest propagowany i wykonywanie jest kontynuowane w następnej instrukcji. Podczas wywoływania funkcji zaawansowanej za pomocą -ErrorAction SilentlyContinueparametru parametr przekłada się na wartość lokalną $ErrorActionPreference zakresu, więc pomija throw również wewnątrz tej funkcji. Nawet w przypadku pomijania throw nadal rejestruje wpis w pliku $Error.
Wartość Ignore uniemożliwia $Error rejestrowanie tylko błędów niepowodujących zakończenia, takich jak te wygenerowane przez element $PSCmdlet.ThrowTerminatingError().
Aby uzyskać więcej informacji na temat kategorii błędów i $ErrorActionPreference zachowania, zobacz about_Error_Handling.
Można na przykład użyć throw słowa kluczowego w bloku instrukcji instrukcji if , aby odpowiedzieć na warunek lub w catch bloku instrukcji try/catch/finally .
Słowo throw kluczowe 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 throw składni jest opcjonalne.
throw Gdy instrukcja nie jest wyświetlana w catch bloku i nie zawiera wyrażenia, generuje błąd ScriptHalted.
throw
ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted
throw Jeśli słowo kluczowe jest używane w catch bloku 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:
throw "This is an error."
This is an error.
At line:1 char:6
+ throw <<<< "This is an error."
+ CategoryInfo : OperationStopped: (This is an error.:String) [], R
untimeException
+ FullyQualifiedErrorId : 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:
throw (Get-Process pwsh)
At line:1 char:6
+ throw <<<< (Get-Process powershell)
+ CategoryInfo : OperationStopped: (System.Diagnostics.Process (Pow
erShell):Process) [],
RuntimeException
+ FullyQualifiedErrorId : System.Diagnostics.Process (PowerShell)
Aby sprawdzić błąd, możesz użyć właściwości TargetObject obiektu ErrorRecord.
$Error[0].TargetObject
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
319 26 61016 70864 568 3.28 5548 PowerShell
Można również throw utworzyć obiekt ErrorRecord lub wyjątek platformy .NET. W poniższym przykładzie użyto słowa kluczowego throw, aby zgłosić obiekt System.FormatException .
$formatError = New-Object System.FormatException
throw $formatError
One of the identified items was in an invalid format.
At line:1 char:6
+ throw <<<< $formatError
+ CategoryInfo : OperationStopped: (:) [], FormatException
+ FullyQualifiedErrorId : One of the identified items was in an invalid
format.
Wynikowy błąd
Słowo throw kluczowe 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 zwróconego obiektu.
Obiekt throw jest opakowany w obiekt ErrorRecord , a obiekt ErrorRecord jest automatycznie zapisywany w zmiennej automatycznej $Error .
Używanie throw polecenia w celu 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. Aby uzyskać właściwy sposób, zobacz about_Functions_Advanced_Parameters .