ARGOMENTO
about_Throw
DESCRIZIONE BREVE
Descrive la parola chiave Throw che genera un errore fatale.
DESCRIZIONE DETTAGLIATA
La parola chiave Throw provoca un errore fatale. È possibile
utilizzare la parola chiave Throw per arrestare l'elaborazione di
un comando, di una funzione o di 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.
È anche 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, quale una
stringa di messaggio utente o l'oggetto che ha provocato l'errore.
SINTASSI
La sintassi della parola chiave Throw è la seguente:
throw [<espressione>]
L'espressione nella sintassi Throw è opzionale. Quando
l'istruzione Throw non è 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 utilizzata in un blocco Catch
senza un'espressione, genera nuovamente l'oggetto RuntimeException
corrente. Per ulteriori informazioni, vedere about_Try_Catch_Finally.
GENERAZIONE DI UNA STRINGA
L'espressione facoltativa in un'istruzione Throw può essere una
stringa, come mostrato nell'esempio seguente:
C:\PS> throw "È un errore."
È un errore.
At line:1 char:6
+ throw <<<< "È un errore."
+ CategoryInfo : OperationStopped: (È un errore.
:String) [], RuntimeException
+ FullyQualifiedErrorId : È un errore.
GENERAZIONE DI ALTRI OGGETTI
L'espressione può essere anche un oggetto che genera l'oggetto che rappresenta il processo di PowerShell, come mostrato 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 (powershell):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. La parte restante dell'oggetto ErrorRecord e
dell'oggetto RuntimeException varia con l'oggetto generato dalla
parola chiave Throw.
L'oggetto RunTimeException è racchiuso in un oggetto ErrorRecord
e l'oggetto ErrorRecord viene automaticamente salvato nella
variabile $Error.
UTILIZZO DI THROW PER CREARE PARAMETRI OBBLIGATORI
È anche possibile utilizzare la parola chiave Throw per rendere
obbligatorio un parametro di funzione.
Si tratta di un'alternativa all'utilizzo del parametro Mandatory
della parola chiave Parameter. Quando si utilizza il parametro
Mandatory, il sistema richiede all'utente il valore del parametro
richiesto. Quando si utilizza la parola chiave Throw, il comando
si arresta e visualizza il record dell'errore.
Ad esempio, la parola chiave Throw nella sottoespressione del
parametro rende obbligatorio il parametro Path nella funzione.
In questo caso, la parola chiave Throw genera una stringa di
messaggio ma è la presenza della parola chiave Throw a generare
l'errore fatale se non è specificato il parametro Path.
L'espressione che segue Throw è opzionale.
function Get-XMLFiles
{
param ($path = $(throw "Il parametro Path è
obbligatorio.")) dir -path $path\* -include *.xml
-recurse | sort lastwritetime | ft lastwritetime,
attributes, name -auto
}
VEDERE ANCHE
about_Break
about_Continue
about_Scope
about_Trap
about_Try_Catch_Finally