Domanda

Non riesco a capire il motivo per cui sto vedendo questo comportamento in 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

Perché una delle espressioni scattare la trappola e l'altro no?

È stato utile?

Soluzione

vorrei prendere in considerazione il vostro primo caso per essere un errore di analisi. Questo è il parser sta tentando di fare piegatura costante (precomputing valore) e gli errori in quel punto perché ottiene una divisione per eccezione zero. Altri errori di sintassi si comportano allo stesso modo cioè esse non attivano la trappola:

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

Se si modifica il codice a questo:

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

Poi i fuochi trappola perché il parser non può più precompute il valore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top