Partage via


about_Throw

Brève description

Décrit le throw mot clé, qui génère par défaut une erreur de fin de script.

Description longue

Le throw mot clé provoque par défaut une erreur de fin de script. Vous pouvez utiliser le mot clé throw pour arrêter le traitement d’une commande, d’une fonction ou d’un script.

Contrairement aux erreurs de fin d’instruction, le throw mot clé déroutant l’intégralité de la pile des appels. L’exécution s’arrête complètement, sauf si l’erreur est interceptée par un bloc ou trap une try/catch instruction.

Note

$ErrorActionPreference peut supprimer throw. Lorsqu’elle est définie SilentlyContinue sur ou Ignore, l’erreur ne se propage pas et l’exécution se poursuit à l’instruction suivante. Lors de l’appel d’une fonction avancée avec -ErrorAction SilentlyContinue, le paramètre se traduit par une valeur locale d’étendue $ErrorActionPreference , de sorte qu’il supprime throw également à l’intérieur de cette fonction. Même en cas de suppression, throw enregistre toujours une entrée dans $Error. La valeur empêche uniquement l’enregistrement Ignore pour les erreurs sans fin comme celles générées par $PSCmdlet.ThrowTerminatingError().$Error

Pour plus d’informations sur les catégories d’erreurs et $ErrorActionPreference le comportement, consultez about_Error_Handling.

Par exemple, vous pouvez utiliser le throw mot clé dans le bloc d’instruction d’une if instruction pour répondre à une condition ou dans le catch bloc d’une try/catch/finally instruction.

Le mot clé throw 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 mot clé throw est la suivante :

throw [<expression>]

L’expression de 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.

throw
Exception: ScriptHalted

Si le mot clé throw est utilisé dans un bloc de catch sans expression, il lève à nouveau la runtimeException actuelle. Pour plus d'informations, voir 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 :

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 :

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.

$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 throw un objet ErrorRecord ou une exception XXX.NET. L’exemple suivant utilise le mot clé throw pour lever un objet System.FormatException.

$formatError = New-Object System.FormatException
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 selon l’objet qui est lancé.

L’objet throw est encapsulé dans un objet ErrorRecord et l’objet ErrorRecord est automatiquement enregistré dans la variable automatique $Error.

Utilisation 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 méthode correcte.

Voir aussi