Observando um script Get-WebFile no PoshCode, http://poshcode.org/3226 , notei esta engenhoca estranha para mim:
$URL_Format_Error = [string]"..."
Write-Error $URL_Format_Error
return
Qual o motivo disso, ao contrário do seguinte?
$URL_Format_Error = [string]"..."
Throw $URL_Format_Error
Ou melhor ainda:
$URL_Format_Error = New-Object System.FormatException "..."
Throw $URL_Format_Error
Pelo que entendi, você deve usar o Write-Error para erros que não terminam e o Throw para terminar os erros. Parece-me que você não deve usar o Write-Error seguido de Return. Existe alguma diferença?
return
se não retornar para o chamador no process
bloco de uma função (avançado); em vez disso, prossegue para o próximo objeto de entrada no pipeline. De fato, este é o cenário típico para gerar erros sem finalização: se o processamento de outros objetos de entrada ainda for possível.
Throw
gera um erro de terminação de script , que não é o mesmo que os erros de terminação de instrução acionados, por exemplo, por Get-Item -NoSuchParameter
ou 1 / 0
.