TitanusEramius skrev:Det kan godt være at det bare er mig, men det virker ikke ret smart. Er det virkelig ikke muligt at bryde ud af en if...fi i sh, og hvis ikke, er det så noget der gælder for "alle sprog" (C, C#, Python, Perl, PHP ...) ?
Det gælder ikke i C# og Python da de har det kaldes exceptions, hvor man har koden der kan fejle i en try blok. Fejl behanfles (mulgivis) i catch'es, 1 per exception type, hvis det giver mening der hvor man er, og dt gør det næsten aldrig, så man ryger ind finally blokken hvor man pænt op efter system ressources man ikke bruger.
Hvis du ikke fanger og behandler en exception i en catch blok så crasher programmet ,når den ikke håndterede exception når main, som er det sted hvor programmet starter.
I C er det helt anderledes, der findes der ikke exceeptions, og du skal selv skrive exceptionhandlingkode, ganske som i bash (shell).
Inde i et program gør man per konvention (i UNIX, Linux, og også mainframes) det at man returnerer 0 og opefter, hvis det gik godt, og fra -1 og nedefter hvis det ikke gik godt.
Funktionen der så kaldte en anden funktion har så en if lige efter funktionskaldet hvor man kigger efter tal mindre end 0 (som jo betyder at en fejl opstod), og så rydder den if så pænt opm og retunerer selv et negativt tal, så funktionen over den og kan fange det rydde pænt op og returnere et neggativt tal osv osv.
Ved systemkald er det lidt anderledes. Der defineres en ekstern variabel af typen int som hedder errno.
Den sætter man til 0 hver eneste gang lige før et systemkald af den årsag at variablen ikke ændres, hvis systemkaldet blev udført med success. Skete der derimod en fejl har errno et negativt tal, nogle gange tager et systemkald en parameter til en struct hvor den hælder fejlinformation ind i hvis det gik galt.
Efter systemkaldet undersøger man errno for tal < 0, og handler på det hvis der opstod en fejl. det gør man naturligvis i en if sætning.
Jeg vil anbefale dig at skifte til Python 3 nu hvor bash begynder at være meget begrænsende for hvad du gerne vil udvikle af software.
Python 3 er nemt at lære, og er et generelt objekt-orienteret programmeringssprog. Du kan blandt andet lavet GTK+ programmer med Python 3.
Hvis du vil lave GTK+ programmer så skal du kige på glade3, som er et program til at lave GTK+ grafiske brugergrænseflader. Filerne fra programmet indlæses så i dit program, og med en nogle få linier kode vises brugergrænsefladen på desktoppen.
http://glade.gnome.org/http://python-gtk-3-tutorial.readthedocs.org/en/latest/install.html <-- Her bruges der GTK+ 3.x
Du kan også lave Qt programmer med Python 3.
Bemærk at der findes en 2.7.x der er den sidste fortolker af den gamle Python.
Python 2.x.x kode er inkompatibelt med Python 3.x.x kode.
Jeg anbefaler eric5 som grafisk udviklingsmiljø til Python 3 software udvikling
http://eric-ide.python-projects.org/eric-screenshots.htmleric5 er et meget lækkert python 3 udvikingsmiljø der gør dig mere produktiv.
Bemærk at eric4 er for Python 2.x.x.
/Lars