Udostępnij za pośrednictwem


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
}

ZOBACZ TEŻ

about_Break

about_Continue

about_Scopes

about_Trap

about_Try_Catch_Finally