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."
endVoorbeelduitvoer 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."
endVoorbeelduitvoer:
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_pingDiepe 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