Patrząc na skrypt Get-WebFile na PoshCode, http://poshcode.org/3226 , zauważyłem to dziwne dla mnie urządzenie:
$URL_Format_Error = [string]"..."
Write-Error $URL_Format_Error
return
Jaki jest tego powód w przeciwieństwie do następującego?
$URL_Format_Error = [string]"..."
Throw $URL_Format_Error
Albo jeszcze lepiej:
$URL_Format_Error = New-Object System.FormatException "..."
Throw $URL_Format_Error
Jak rozumiem, w przypadku błędów nie kończących się należy używać funkcji Write-Error, a do usuwania błędów Throw, więc wydaje mi się, że nie należy używać opcji Write-Error, po której następuje Return. Czy jest jakaś różnica?
return
nie nie powrócić do rozmówcy w process
blokowym (zaawansowane) funkcji; zamiast tego przechodzi do następnego obiektu wejściowego w potoku. Rzeczywiście, jest to typowy scenariusz generowania błędów nie kończących się: jeśli przetwarzanie dalszych obiektów wejściowych jest nadal możliwe.
Throw
generuje błąd kończący skrypt , który nie jest tym samym, co błąd kończący instrukcję, wywołany na przykład przez Get-Item -NoSuchParameter
lub 1 / 0
.