about_Throw
Description courte
Décrit le throw
mot clé qui génère une erreur de fin.
Description longue
Le throw
mot clé provoque une erreur de fin. Vous pouvez utiliser le throw
mot clé pour arrêter le traitement d’une commande, d’une fonction ou d’un script.
Par exemple, vous pouvez utiliser le throw
mot clé dans le bloc de script d’une if
instruction pour répondre à une condition ou dans le catch
bloc d’unefinally
try
-catch
-instruction.
Le throw
mot clé peut lever n’importe quel objet, tel qu’une chaîne de message utilisateur ou l’objet qui a provoqué l’erreur.
Syntaxe
La syntaxe du throw
mot clé est la suivante :
throw [<expression>]
L’expression dans la throw
syntaxe est facultative. Lorsque l’instruction throw
n’apparaît pas dans un catch
bloc et qu’elle n’inclut pas d’expression, elle génère une erreur ScriptHalted .
throw
ScriptHalted
At line:1 char:6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted
Si le throw
mot clé est utilisé dans un catch
bloc sans expression, il lève à nouveau le runtimeException actuel. Pour plus d’informations, consultez about_Try_Catch_Finally.
Levée d’une chaîne
L’expression facultative dans une throw
instruction peut être une chaîne, comme illustré dans l’exemple suivant :
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.
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 :
throw (Get-Process pwsh)
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 $Error
variable automatique pour examiner l’erreur.
$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 throw
utiliser un objet ErrorRecord ou une exception .NET. L’exemple suivant utilise le throw
mot clé pour lever un objet System.FormatException .
$formatError = New-Object System.FormatException
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 throw
mot clé 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 levée.
L’objet throw
est encapsulé dans un objet ErrorRecord et l’objet ErrorRecord est automatiquement enregistré dans la $Error
variable automatique.
Utilisation throw
pour créer un paramètre obligatoire
Contrairement aux versions antérieures de PowerShell, n’utilisez pas le mot clé pour la throw
validation des paramètres. Consultez about_Functions_Advanced_Parameters pour obtenir la bonne façon.