Fish Shell:
Virheiden käsittely
Miten:
Virheiden kiinniottamiseksi Fishissä, nojaa status
-komentoon ja ehtolauseisiin. Sanokaamme, että ping
epäonnistuu; tässä on miten voit havaita sen:
ping -c 1 example.com
if not status is-success
echo "Jokin meni mönkään pingin kanssa."
end
Esimerkkituloste jos ping
epäonnistuu:
Jokin meni mönkään pingin kanssa.
Tietyn virhekoodin käsittelemiseksi, käytä status --is
:
false
if status --is 1
echo "Kiinni virheestä koodilla 1."
end
Esimerkkituloste:
Kiinni virheestä koodilla 1.
Jotta saisit aikaan kestävämmän ratkaisun, harkitse funktion käyttämistä:
function try_ping
ping -c 1 example.com
or begin
echo "Ping epäonnistui tilalla $status"
return 1
end
end
try_ping
Syventävä tarkastelu
Virheenkäsittely Fishissä ei vastaa korkeamman tason kielistä tuttua try/catch
-paradigmaa. Sen sijaan sinulla on suoraviivaisia poistumiskoodeja status
-komennon tarjoamana.
Historiallisesti Unix-tyyppisissä järjestelmissä nollan suuruinen poistumistila merkitsee menestystä, kun taas mikä tahansa nollasta poikkeava arvo osoittaa virhetta, joka usein heijastaa erilaisia epäonnistumisen syitä. Tätä konventiota käyttävät useimmat komentorivityökalut ja siten myös Fish itse.
Vaihtoehtoja status
-tarkistuksille Fishissä sisältävät signaalinkäsittelyn käyttämisen trap
-komennon avulla muissa kuorissa, mutta Fish suosii selkeämpää tilan tarkistusta, koska se on selkeämpää ja vähemmän altis sivuvaikutuksille.
Toteutuksen näkökulmasta virheiden käsittely Fishissä pysyy yksinkertaisena mutta tehokkaana, suurelta osin sen estottoman luonteen ja selkeän syntaksin korostamisen ansiosta, kuten esimerkeissä näkyy. Virhekoodit yhdistyvät hienosti funktioihin, mahdollistaen modulaarisen ja luettavan virheenhallinnan.
Katso myös
- Fishin dokumentaatio ehdolauseista: https://fishshell.com/docs/current/language.html#conditionals
- Fishin opas virheenkäsittelyyn: https://fishshell.com/docs/current/tutorial.html#error-handling