Informacje o 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
ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : 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.
RZUCANIE 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."
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.
RZUCANIE 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 PowerShell)
System.Diagnostics.Process (PowerShell)
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 w zmiennej automatycznej $error.
C:\PS> $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żesz również zgłosić obiekt ErrorRecord lub wyjątek microsoft .NET Framework. 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
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 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
Możesz użyć słowa kluczowego Throw, aby parametr funkcji był obowiązkowy.
Jest to alternatywa dla używania parametru obowiązkowego słowa kluczowego Parametr. W przypadku użycia parametru Obowiązkowe system monituje użytkownika o wymaganą wartość parametru. Gdy używasz słowa kluczowego Throw, polecenie zatrzymuje się i wyświetla rekord błędu.
Na przykład słowo kluczowe Throw w podrażeniu parametru sprawia, że parametr Path jest wymaganym parametrem w funkcji.
W takim przypadku słowo kluczowe Throw zgłasza ciąg komunikatu, ale jest to obecność słowa kluczowego Throw, które generuje błąd zakończenia, jeśli parametr Path nie zostanie określony. Wyrażenie, które następuje po throw, jest opcjonalne.
function Get-XMLFiles
{
param ($path = $(throw "The Path parameter is required."))
dir -path $path\*.xml -recurse |
sort lastwritetime |
ft lastwritetime, attributes, name -auto
}