Condividi tramite


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-trycatch-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
Exception: 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."
Exception: 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)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)

È possibile utilizzare la proprietà TargetObject dell'oggetto ErrorRecord nella $Error variabile automatica per esaminare l'errore.

$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

È 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
OperationStopped: 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.

Vedi anche