Fish Shell:
Obsługa błędów

Jak to zrobić:

Aby przechwytywać błędy w Fish, użyj komendy status i warunków. Powiedzmy, że ping nie powiedzie się; oto jak to wykryć:

ping -c 1 example.com
if not status is-success
    echo "Coś rybiego stało się z pingiem."
end

Przykładowy wynik, jeśli ping się nie powiedzie:

Coś rybiego stało się z pingiem.

Aby obsłużyć konkretny kod błędu, użyj status --is:

false
if status --is 1
    echo "Przechwycono błąd z kodem 1."
end

Przykładowy wynik:

Przechwycono błąd z kodem 1.

Do bardziej zaawansowanego podejścia rozważ użycie funkcji:

function try_ping
    ping -c 1 example.com
    or begin
        echo "Ping nie powiódł się ze statusem $status"
        return 1
    end
end

try_ping

Glebsze zaglądanie

Obsługa błędów w Fish nie odpowiada paradygmatowi try/catch, który może być znany z języków wyższego poziomu. Zamiast tego mamy do czynienia z prostymi kodami wyjścia dostarczanymi przez komendę status.

Historycznie, w systemach podobnych do Unix, status wyjścia 0 oznacza sukces, podczas gdy każda inna wartość niezerowa wskazuje na błąd, który często odzwierciedla różne przyczyny niepowodzenia. Ta konwencja jest stosowana przez większość narzędzi linii poleceń i zatem, również przez Fisha.

Alternatywy dla sprawdzania status w Fish obejmują obsługę sygnałów przez trap w innych shellach, ale Fish preferuje bardziej wyraźne sprawdzanie statusu, ponieważ jest to czyściejsze i mniej podatne na efekty uboczne.

Pod względem implementacji, obsługa błędów w Fish pozostaje prosta, a zarazem potężna, przede wszystkim dzięki jej nieblokującej naturze i naciskowi na przejrzystą składnię, jak pokazano w przykładach. Kody błędów ładnie współgrają z funkcjami, pozwalając na modułowe i czytelne zarządzanie błędami.

Zobacz również