Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
DESCRIPTION COURTE
Décrit le mot clé Throw qui génère une erreur avec fin d’exécution.
DESCRIPTION DÉTAILLÉE
Le mot-clé Throw provoque une erreur de terminaison. Vous pouvez utiliser le mot-clé Throw pour arrêter le traitement d’une commande, d’une fonction ou d’un script.
Par exemple, vous pouvez utiliser le mot-clé Throw dans le bloc de script d’une instruction If pour répondre à une condition ou dans le bloc Catch d’une instruction Try-Catch-Finally. Vous pouvez également utiliser le mot-clé Throw dans une déclaration de paramètre pour rendre un paramètre de fonction obligatoire.
Le mot-clé Throw peut générer n’importe quel objet, tel qu’une chaîne de message utilisateur ou l’objet à l’origine de l’erreur.
SYNTAXE
La syntaxe du mot-clé Throw est la suivante :
throw [<expression>]
L’expression dans la syntaxe Throw est facultative. Lorsque l’instruction Throw n’apparaît pas dans un bloc Catch et qu’elle n’inclut pas d’expression, elle génère une erreur ScriptStoped.
C:\PS> throw
ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted
Si le mot-clé Throw est utilisé dans un bloc Catch sans expression, il lève à nouveau l’exception RuntimeException actuelle. Pour plus d’informations, reportez-vous à la section about_Try_Catch_Finally.
LANCER D’UNE CORDE
L’expression facultative d’une instruction Throw peut être une chaîne, comme illustré dans l’exemple suivant :
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.
LANCER D’AUTRES OBJETS
L’expression peut également être un objet qui lève l’objet qui représente le processus PowerShell, comme illustré dans l’exemple suivant :
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)
Vous pouvez utiliser la propriété TargetObject de l’objet ErrorRecord dans la variable automatique $error pour examiner l’erreur.
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
Vous pouvez également lever un objet ErrorRecord ou une exception Microsoft .NET Framework. L’exemple suivant utilise le mot clé Throw pour lever un objet 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.
ERREUR RÉSULTANTE
Le mot-clé Throw peut générer un objet ErrorRecord. La propriété Exception de l’objet ErrorRecord contient un objet RuntimeException. Le reste de l’objet ErrorRecord et de l’objet RuntimeException varie en fonction de l’objet lancé par le mot clé Throw.
L’objet RunTimeException est encapsulé dans un objet ErrorRecord, et l’objet ErrorRecord est automatiquement enregistré dans la variable automatique $Error.
UTILISATION DE THROW POUR CRÉER UN PARAMÈTRE OBLIGATOIRE
Vous pouvez utiliser le mot-clé Throw pour rendre obligatoire un paramètre de fonction.
Il s’agit d’une alternative à l’utilisation du paramètre Mandatory du mot-clé Paramètre. Lorsque vous utilisez le paramètre Obligatoire, le système invite l’utilisateur à saisir la valeur de paramètre requise. Lorsque vous utilisez le mot-clé Throw, la commande s’arrête et affiche l’enregistrement d’erreur.
Par exemple, le mot-clé Throw dans la sous-expression de paramètre fait du paramètre Path un paramètre obligatoire dans la fonction.
Dans ce cas, le mot-clé Throw lève une chaîne de message, mais c’est la présence du mot-clé Throw qui génère l’erreur de fin si le paramètre Path n’est pas spécifié. L’expression qui suit Throw est facultative.
function Get-XMLFiles
{
param ($path = $(throw "The Path parameter is required."))
dir -path $path\*.xml -recurse |
sort lastwritetime |
ft lastwritetime, attributes, name -auto
}