PowerShell:
Pisanie do standardowego błędu
Jak to zrobić?
# Zapis do strumienia błędów za pomocą Write-Error
Write-Error "To jest komunikat błędu"
# Zapis do strumienia błędów przez przekierowanie
"Coś poszło nie tak" 1>&2
# Własna funkcja pisząca do strumienia błędów
function Write-StdErr($message) {
$message | Out-File -FilePath 'php://stderr'
}
Write-StdErr "To jest błąd z własnej funkcji"
W przykładach powyżej każdy fragment kodu zapisuje informacje do strumienia błędów. Write-Error
jest wbudowanym poleceniem. Przekierowanie z 1>&2
to klasyczne przekierowanie standardowego wyjścia (1) do standardowego błędu (2). Natomiast funkcja Write-StdErr
pokazuje inny sposób zapisu do tego strumienia.
Deep Dive
Historia: PowerShell, tak jak wiele shelle’ów, dziedziczy ideę przekierowania i strumieni z modelu Unixowego. Standardowe strumienie (stdout, stderr, stdin) pochodzą z lat 70-tych.
Alternatywy: Można także używać Throw
w celu wygenerowania wyjątku, co również trafia do standard error, ale zatrzymuje wykonanie skryptu.
Szczegóły implementacji: Strumień błędów w PowerShellu to jeden z pięciu podstawowych strumieni: Output, Error, Warning, Verbose i Debug. Każdy strumień można przekierować lub ukryć niezależnie.