Fish Shell:
Fouten afhandelen

Hoe te:

Om fouten in Fish op te vangen, vertrouw op de status opdracht en conditionals. Stel dat ping faalt; hier is hoe je dat detecteert:

ping -c 1 example.com
if not status is-success
    echo "Er is iets fishy gebeurd met de ping."
end

Voorbeelduitvoer als ping faalt:

Er is iets fishy gebeurd met de ping.

Om een specifieke foutcode te behandelen, gebruik status --is:

false
if status --is 1
    echo "Een fout met code 1 gevangen."
end

Voorbeelduitvoer:

Een fout met code 1 gevangen.

Voor een robuustere aanpak, overweeg het gebruik van een functie:

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

try_ping

Diepe Duik

Foutafhandeling in Fish komt niet overeen met het try/catch paradigma dat je misschien kent van hogere programmeertalen. In plaats daarvan heb je te maken met eenvoudige exitstatuses die worden verstrekt door de status opdracht.

Historisch gezien betekent in Unix-achtige systemen een exitstatus van 0 succes, terwijl elke niet-nul waarde een fout aangeeft, wat vaak verschillende redenen voor falen weerspiegelt. Deze conventie wordt gebruikt door de meeste command-line hulpprogramma’s en dus ook door Fish zelf.

Alternatieven voor status checks in Fish omvatten signal handling via trap in andere shells, maar Fish geeft de voorkeur aan explicietere statuscontroles, omdat het schoner is en minder vatbaar voor bijeffecten.

Wat betreft de implementatie, blijft foutafhandeling in Fish eenvoudig maar krachtig, grotendeels te danken aan zijn non-blokkerende aard en nadruk op duidelijke syntaxis, zoals getoond in de voorbeelden. Foutcodes gaan mooi samen met functies, wat zorgt voor modulaire en leesbare foutbeheersing.

Zie Ook