Als ich mir ein Get-WebFile-Skript auf PoshCode ( http://poshcode.org/3226) ansah, bemerkte ich diese für mich seltsame Erfindung :
$URL_Format_Error = [string]"..."
Write-Error $URL_Format_Error
return
Was ist der Grund dafür im Gegensatz zu den folgenden?
$URL_Format_Error = [string]"..."
Throw $URL_Format_Error
Oder noch besser:
$URL_Format_Error = New-Object System.FormatException "..."
Throw $URL_Format_Error
Soweit ich weiß, sollten Sie Write-Error für nicht terminierende Fehler und Throw für terminierende Fehler verwenden. Daher sollten Sie meines Erachtens keinen Write-Error gefolgt von Return verwenden. Ist da ein Unterschied?
return
sie nicht in dem an den Aufrufer zurückgeben process
Block einer (Fortgeschrittene) Funktion; Stattdessen wird mit dem nächsten Eingabeobjekt in der Pipeline fortgefahren. Dies ist in der Tat das typische Szenario für die Erzeugung nicht beendender Fehler: Wenn die Verarbeitung weiterer Eingabeobjekte noch möglich ist.
Throw
ein Skript-Abschlussfehler generiert wird, der nicht mit den Anweisungs-Abschlussfehlern identisch ist, die beispielsweise durch Get-Item -NoSuchParameter
oder ausgelöst werden 1 / 0
.