about_Throw
Description courte
Décrit le mot clé Throw qui génère une erreur avec fin d'exécution.
Description longue
L’mot clé de levée provoque une erreur de fin. Vous pouvez utiliser l’mot clé Throw pour arrêter le traitement d’une commande, d’une fonction ou d’un script.
Par exemple, vous pouvez utiliser l’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 l’mot clé Throw dans une déclaration de paramètre pour rendre obligatoire un paramètre de fonction.
L’mot clé Throw peut lever n’importe quel objet, tel qu’une chaîne de message utilisateur ou l’objet à l’origine de l’erreur.
Syntax
La syntaxe de l’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 ScriptHalted.
C:\PS> throw
Exception: ScriptHalted
Si le mot clé Throw est utilisé dans un bloc Catch sans expression, il lève à nouveau la runtimeException actuelle. Pour plus d’informations, consultez about_Try_Catch_Finally.
Levée d’une chaîne
L’expression facultative dans une instruction Throw peut être une chaîne, comme illustré dans l’exemple suivant :
C:\PS> throw "This is an error."
Exception: This is an error.
Levée 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 Pwsh)
Exception: System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh) System.Diagnostics.Process (pwsh)
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
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
125 174.44 229.57 23.61 1548 2 pwsh
63 44.07 81.95 1.75 1732 2 pwsh
63 43.32 77.65 1.48 9092 2 pwsh
Vous pouvez également lever un objet ErrorRecord ou une exception .NET. L’exemple suivant utilise l’mot clé Throw pour lever un objet System.FormatException.
C:\PS> $formatError = new-object system.formatexception
C:\PS> throw $formatError
OperationStopped: 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 avec l’objet que l’mot clé Throw lève.
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
Contrairement aux versions antérieures de PowerShell, n’utilisez pas le mot clé Throw pour la validation des paramètres. Consultez about_Functions_Advanced_Parameters pour connaître la façon appropriée.