RUBRIQUE
about_Throw
DESCRIPTION COURTE
Décrit le mot clé Throw, qui génère une erreur avec fin d'exécution.
DESCRIPTION LONGUE
Le mot clé Throw provoque une erreur avec fin d'exécution. 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 lever tout 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 dans la syntaxe de 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
ScriptHalted
À la ligne : 1 Caractère : 6
+ throw <<<<
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted
Si le mot clé Throw est utilisé dans un bloc Catch sans aucune
expression, il lève à nouveau l'exception RuntimeException
actuelle. Pour plus d'informations, consultez about_Try_Catch_Finally.
LEVER UNE CHAÎNE
L'expression facultative dans une instruction Throw peut être une
chaîne, comme affiché dans l'exemple suivant :
C:\PS> throw "C'est une erreur."
C'est une erreur.
À la ligne : 1 Caractère : 6
+ throw <<<< "C'est une erreur."
+ CategoryInfo : OperationStopped: (C'est une erreur.:String) [], RuntimeException
+ FullyQualifiedErrorId : C'est une erreur.
LEVER D'AUTRES OBJETS
L'expression peut également être un objet qui lève l'objet
représentant le processus PowerShell, comme indiqué dans
l'exemple suivant :
C:\PS> throw (get-process powershell)
System.Diagnostics.Process (powershell) À la ligne : 1
Caractère : 6
+ throw <<<< (get-process powershell)
+ CategoryInfo : OperationStopped: (System.Diagnostics.Process (powershell):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
Le format de l'un des éléments identifiés n'était pas valide.
À la ligne : 1 Caractère : 6
+ throw <<<< $formatError
+ CategoryInfo : OperationStopped: (:) [], FormatException
+ FullyQualifiedErrorId : Le format de l'un des éléments identifiés n'était pas valide.
ERREUR OBTENUE
Le mot clé Throw peut générer un objet ErrorRecord. La propriété
Exception de l'objet ErrorRecord contient un objet RuntimeExceptio
n. Le reste de l'objet ErrorRecord et l'objet RuntimeException
varient en fonction de l'objet levé par le mot clé Throw.
L'objet RunTimeException est encapsulé dans un objet ErrorRecord,
et l'objet ErrorRecord est enregistré automatiquement dans la
variable automatique $Error.
UTILISER THROW POUR CRÉER UN PARAMÈTRE OBLIGATOIRE
Vous pouvez utiliser le mot clé Throw pour rendre un paramètre de
fonction obligatoire.
Il s'agit d'une alternative à l'utilisation du paramètre Mandatory
du mot clé Parameter. Lorsque vous utilisez le paramètre Mandatory,
le système invite l'utilisateur à entrer la valeur de paramètre
obligatoire. Lorsque vous utilisez le mot clé hrow, la commande
Ts'arrête et affiche l'enregistrement d'erreur.
Par exemple, le mot clé Throw dans la sous-expression du
paramètre rend le paramètre Path 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 avec fin
d'exécution si le paramètre Path n'est pas spécifié. L'expression
qui suit Throw est facultative.
function Get-XMLFiles
{
param ($path = $(throw "Le paramètre Path est obligatoire."))
dir -path $path\* -include *.xml -recurse | sort lastwritetime | ft lastwritetime, attributes, name -auto
}
VOIR AUSSI
about_Break
about_Continue
about_Scope
about_Trap
about_Try_Catch_Finally