piège Powershell pas toujours déclenché
-
21-09-2019 - |
Question
Je ne comprends pas pourquoi je vois ce comportement dans Powershell:
PS C:\> trap { "Got it!" } 1/0
Attempted to divide by zero.
At line:1 char:22
+ trap { "Got it!" } 1/0 <<<<
PS C:\> trap { "Got it!" } 1/$null
Got it!
Attempted to divide by zero.
At line:1 char:22
+ trap { "Got it!" } 1/$ <<<< null
Pourquoi une expression déclenche le piège et l'autre ne fonctionne pas?
La solution
Je considère votre premier cas être une erreur d'analyse. C'est l'analyseur tente de faire plier constante (précalcul la valeur) et des erreurs à ce moment-là parce qu'il obtient une division par zéro exception. D'autres erreurs de syntaxe se comportent de la même manière dire qu'ils ne déclenchent pas le piège:
trap { "Got it!" } 1/;
You must provide a value expression on the right-hand side of the '/' operator.
Si vous modifiez le code à ceci:
$denom = 0
trap { "Got it!" } 1/$denom
Got it!
Attempted to divide by zero.
Ensuite, les feux de piège parce que l'analyseur ne peut plus précalculer la valeur.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow