Condividi tramite


informazioni su Throw

Breve descrizione

Descrive la parola chiave Throw, che genera un errore irreversibile.

Descrizione lunga

La parola chiave Throw causa un errore irreversibile. È possibile utilizzare la parola chiave Throw per interrompere l'elaborazione di un comando, una funzione o uno script.

Ad esempio, è possibile utilizzare la parola chiave Throw nel blocco di script di un'istruzione If per rispondere a una condizione o nel blocco Catch di un'istruzione Try-Catch-Finally. È inoltre possibile utilizzare la parola chiave Throw in una dichiarazione di parametro per rendere obbligatorio un parametro di funzione.

La parola chiave Throw può generare qualsiasi oggetto, ad esempio una stringa di messaggio utente o l'oggetto che ha causato l'errore.

Sintassi

La sintassi della parola chiave Throw è la seguente:

throw [<expression>]

L'espressione nella sintassi Throw è facoltativa. Quando l'istruzione Throw non viene visualizzata in un blocco Catch e non include un'espressione, genera un errore ScriptHalted.

C:\PS> throw

Exception: ScriptHalted

Se la parola chiave Throw viene utilizzata in un blocco Catch senza un'espressione, viene generata nuovamente l'eccezione RuntimeException corrente. Per ulteriori informazioni, vedere about_Try_Catch_Finally.

Lancio di una stringa

L'espressione facoltativa in un'istruzione Throw può essere una stringa, come illustrato nell'esempio seguente:

C:\PS> throw "This is an error."

Exception: This is an error.

Lanciare altri oggetti

L'espressione può anche essere un oggetto che genera l'oggetto che rappresenta il processo di PowerShell, come illustrato nell'esempio seguente:

C:\PS> 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 variabile automatica $error per esaminare l'errore.

C:\PS> $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 possibile generare un oggetto ErrorRecord o un'eccezione .NET. Nell'esempio seguente viene utilizzata la parola chiave Throw per generare un oggetto System.FormatException.

C:\PS> $formatError = new-object system.formatexception

C:\PS> throw $formatError

OperationStopped: One of the identified items was in an invalid format.

Errore risultante

La parola chiave Throw può generare un oggetto ErrorRecord. La proprietà Exception dell'oggetto ErrorRecord contiene un oggetto RuntimeException. Il resto dell'oggetto ErrorRecord e dell'oggetto RuntimeException varia a seconda dell'oggetto generato dalla parola chiave Throw.

L'oggetto RunTimeException viene incapsulato in un oggetto ErrorRecord e l'oggetto ErrorRecord viene salvato automaticamente nella $Error variabile automatica.

Utilizzo di Throw per creare un parametro obbligatorio

A differenza delle versioni precedenti di PowerShell, non usare la parola chiave Throw per la convalida dei parametri. Vedere about_Functions_Advanced_Parameters per il modo corretto.

Vedere anche