En regardant un script Get-WebFile sur PoshCode, http://poshcode.org/3226 , j'ai remarqué cet étrange engin:
$URL_Format_Error = [string]"..."
Write-Error $URL_Format_Error
return
Quelle en est la raison par opposition à la suivante?
$URL_Format_Error = [string]"..."
Throw $URL_Format_Error
Ou encore mieux:
$URL_Format_Error = New-Object System.FormatException "..."
Throw $URL_Format_Error
Si je comprends bien, vous devez utiliser Write-Error pour les erreurs non terminantes et Throw pour les erreurs terminales, il me semble donc que vous ne devriez pas utiliser Write-Error suivi de Return. Y a-t-il une différence?
return
cela ne revient pas à l'appelant dans le process
bloc d'une fonction (avancée); à la place, il passe à l' objet d'entrée suivant dans le pipeline. En effet, c'est le scénario typique pour générer des erreurs sans fin: si le traitement d'autres objets d'entrée est toujours possible.
Throw
génère une erreur de fin de script , qui n'est pas la même que erreurs de fin de déclaration déclenchées, par exemple, par Get-Item -NoSuchParameter
ou 1 / 0
.