Informazioni su Throw
DESCRIZIONE BREVE
Descrive la parola chiave Throw, che genera un errore irreversibile.
DESCRIZIONE LUNGA
La parola chiave Throw causa un errore irreversibile. È possibile usare la parola chiave Throw per arrestare l'elaborazione di un comando, una funzione o uno script.
Ad esempio, è possibile usare 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. È anche possibile usare 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.
SYNTAX
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
ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted
Se la parola chiave Throw viene usata in un blocco Catch senza un'espressione, genera nuovamente l'eccezione RuntimeException corrente. Per altre informazioni, vedere about_Try_Catch_Finally.
GENERAZIONE 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."
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.
GENERAZIONE DI 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 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)
È possibile utilizzare la proprietà TargetObject dell'oggetto ErrorRecord nella variabile automatica $error per esaminare l'errore.
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
È anche possibile generare un oggetto ErrorRecord o un'eccezione di Microsoft .NET Framework. 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
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 parola chiave Throw 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 dalla parola chiave Throw.
L'oggetto RunTimeException viene sottoposto a wrapping in un oggetto ErrorRecord e l'oggetto ErrorRecord viene salvato automaticamente nella variabile automatica $Error.
USO DI THROW PER CREARE UN PARAMETRO OBBLIGATORIO
È possibile usare la parola chiave Throw per rendere obbligatorio un parametro di funzione.
Si tratta di un'alternativa all'uso del parametro Obbligatorio della parola chiave Parameter. Quando si usa il parametro Obbligatorio, il sistema richiede all'utente il valore del parametro richiesto. Quando si usa la parola chiave Throw, il comando arresta e visualizza il record di errore.
Ad esempio, la parola chiave Throw nella sottoespressione del parametro rende il parametro Path un parametro obbligatorio nella funzione .
In questo caso, la parola chiave Throw genera una stringa di messaggio, ma è la presenza della parola chiave Throw che genera l'errore di terminazione se il parametro Path non è specificato. L'espressione che segue Throw è facoltativa.
function Get-XMLFiles
{
param ($path = $(throw "The Path parameter is required."))
dir -path $path\*.xml -recurse |
sort lastwritetime |
ft lastwritetime, attributes, name -auto
}