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