Fish Shell:
Feilhåndtering

Hvordan:

For å fange feil i Fish, støtt deg på status kommandoen og betingelser. Si at ping mislykkes; slik kan du oppdage det:

ping -c 1 example.com
if not status is-success
    echo "Noe fiskete skjedde med ping."
end

Eksempelutdata hvis ping mislykkes:

Noe fiskete skjedde med ping.

For å håndtere en spesifikk feilkode, bruk status --is:

false
if status --is 1
    echo "Fanget en feil med kode 1."
end

Eksempelutdata:

Fanget en feil med kode 1.

For en mer robust tilnærming, vurder å bruke en funksjon:

function try_ping
    ping -c 1 example.com
    or begin
        echo "Ping mislyktes med status $status"
        return 1
    end
end

try_ping

Dypdykk

Feilhåndtering i Fish matcher ikke try/catch paradigmet som du kanskje kjenner fra høyere nivå språk. I stedet har du greie utgangsstatusser gitt av status kommandoen.

Historisk sett, i Unix-lignende systemer, betyr en utgangsstatus på 0 suksess, mens hvilken som helst ikke-null verdi indikerer en feil, som ofte reflekterer forskjellige feilårsaker. Denne konvensjonen er brukt av de fleste kommandolinjeverktøyene og dermed, av Fish selv.

Alternativer til status sjekker i Fish inkluderer signalhåndtering via trap i andre skall, men Fish foretrekker mer eksplisitte statussjekker, fordi det er renere og mindre utsatt for bieffekter.

Når det gjelder gjennomføring, forblir feilhåndteringen i Fish enkel men kraftfull, i stor grad på grunn av sin ikke-blokkerende natur og vekt på klar syntaks, som vist i eksemplene. Feilkoder går pent sammen med funksjoner, noe som tillater modulær og lesbar feilhåndtering.

Se Også