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




Argomenti della Guida