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
- Fish documentatie over conditionals: https://fishshell.com/docs/current/language.html#conditionals
- Fish tutorial over foutafhandeling: https://fishshell.com/docs/current/tutorial.html#error-handling