Guardando uno script Get-WebFile su PoshCode, http://poshcode.org/3226 , ho notato questo strano aggeggio a me:
$URL_Format_Error = [string]"..."
Write-Error $URL_Format_Error
return
Qual è la ragione di ciò al contrario di quanto segue?
$URL_Format_Error = [string]"..."
Throw $URL_Format_Error
O ancora meglio:
$URL_Format_Error = New-Object System.FormatException "..."
Throw $URL_Format_Error
A quanto ho capito, dovresti usare Write-Error per errori non terminanti e Throw per terminare gli errori, quindi mi sembra che non dovresti usare Write-Error seguito da Return. C'è una differenza?
return
non non ritornare al chiamante nel process
blocco di una funzione (avanzato); invece, passa all'oggetto di input successivo nella pipeline. In effetti, questo è lo scenario tipico per la generazione di errori senza interruzione: se l'elaborazione di ulteriori oggetti di input è ancora possibile.
Throw
genera una sceneggiatura errore di -terminating, che non è la stessa della dichiarazione -terminating errori innescati, per esempio, da Get-Item -NoSuchParameter
o 1 / 0
.