Al mirar un script Get-WebFile en PoshCode, http://poshcode.org/3226 , noté este artilugio extraño para mí:
$URL_Format_Error = [string]"..."
Write-Error $URL_Format_Error
return
¿Cuál es la razón de esto en lugar de lo siguiente?
$URL_Format_Error = [string]"..."
Throw $URL_Format_Error
O mejor:
$URL_Format_Error = New-Object System.FormatException "..."
Throw $URL_Format_Error
Según tengo entendido, debe usar Write-Error para errores que no terminan, y Throw para errores de terminación, por lo que me parece que no debe usar Write-Error seguido de Return. ¿Hay una diferencia?
return
no no regresar a la llamada en el process
bloque de una función (avanzado); en su lugar, pasa al siguiente objeto de entrada en la tubería. De hecho, este es el escenario típico para generar errores sin terminación: si aún es posible procesar más objetos de entrada.
Throw
genera un error de terminación de secuencia de comandos , que no es lo mismo que la declaración de errores de terminación activados, por ejemplo, por Get-Item -NoSuchParameter
o 1 / 0
.