about_Throw
Descrizione breve
Descrive la throw
parola chiave che genera un errore irreversibile.
Descrizione lunga
La throw
parola chiave causa un errore irreversibile. È possibile usare la throw
parola chiave per arrestare l'elaborazione di un comando, di una funzione o di uno script.
Ad esempio, è possibile usare la throw
parola chiave nel blocco di script di un'istruzione if
per rispondere a una condizione o nel blocco di un'istruzionecatch
-try
catch
-finally
.
La throw
parola chiave può generare qualsiasi oggetto, ad esempio una stringa di messaggio utente o l'oggetto che ha causato l'errore.
Sintassi
La sintassi della throw
parola chiave è la seguente:
throw [<expression>]
L'espressione nella throw
sintassi è facoltativa. Quando l'istruzione throw
non viene visualizzata in un catch
blocco e non include un'espressione, genera un errore ScriptHalted .
throw
ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted
Se la throw
parola chiave viene usata in un catch
blocco senza un'espressione, genera nuovamente l'eccezione RuntimeException corrente. Per altre informazioni, vedere about_Try_Catch_Finally.
Creazione di una stringa
L'espressione facoltativa in un'istruzione throw
può essere una stringa, come illustrato nell'esempio seguente:
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.
Generare altri oggetti
L'espressione può anche essere un oggetto che genera l'oggetto che rappresenta il processo di PowerShell, come illustrato nell'esempio seguente:
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)
È possibile utilizzare la proprietà TargetObject dell'oggetto ErrorRecord nella $Error
variabile automatica per esaminare l'errore.
$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
È anche throw
possibile usare un oggetto ErrorRecord o un'eccezione .NET. Nell'esempio seguente viene utilizzata la throw
parola chiave per generare un oggetto 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.
Errore risultante
La throw
parola chiave può generare un oggetto ErrorRecord . La proprietà Exception dell'oggetto ErrorRecord contiene un oggetto RuntimeException .
Il resto dell'oggetto ErrorRecord e l'oggetto RuntimeException variano a seconda dell'oggetto generato.
L'oggetto throw
viene sottoposto a wrapping in un oggetto ErrorRecord e l'oggetto ErrorRecord viene salvato automaticamente nella $Error
variabile automatica.
Uso throw
di per creare un parametro obbligatorio
A differenza delle versioni precedenti di PowerShell, non usare la parola chiave per la throw
convalida dei parametri. Vedere about_Functions_Advanced_Parameters per il modo corretto.