Frage

Ich kann nicht verstehen, warum ich dieses Verhalten in Powershell bin zu sehen:

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

Warum ein Ausdruck Auslöser der Falle und der andere nicht?

War es hilfreich?

Lösung

würde ich Ihren ersten Fall betrachten, ein Parse-Fehler zu sein. Das ist der Parser Konstantenfaltung zu tun versucht (Vorberechnen den Wert) und Fehler an diesem Punkt, da es eine Division durch Null Ausnahme erhält. Andere Syntaxfehler verhalten sich die gleiche Weise das heißt, sie lösen keine der Falle:

trap { "Got it!" } 1/;
You must provide a value expression on the right-hand side of the '/' operator.

Wenn Sie den Code, um diese Änderung:

$denom = 0
trap { "Got it!" } 1/$denom
Got it!
Attempted to divide by zero.

Dann wird die Falle ausgelöst, weil der Parser nicht mehr den Wert precompute kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top