runtime error/fi
English · Suomi
Ajonaikainen virhe (run-time error) on korjaamaton virhetila, joka syntyy ajon aikana, eli ohjelman suorituksessa.
Käyttäytyminen
FPC lisää koodia, havaitsemaan suuren määrän virhetilanteita. Jos tällainen tilanne ilmenee, RTL-kirjasto käynnistää ohjelman lopettamisen. Run-time error numero ja sen osoite, jossa virhe tapahtui, tulostetaan. Tämä on turvallisin ja halvin virheenkäsittely.
Vertailevia huomautuksia
Käännösajan virheet
Toisin kuin käännösaikaiset virheet, jotka kääntäjä havaitsee kääntämisen aikana, niin ajonaikaiset virheet riippuvat ohjelman tilasta, joten niitä ei voida ennakoida. Jos syntyy käännösaikainen virhe niin suoritettavaa ohjelmaa ei tule.
Poikkeukset
Ajonaikaiset virheet ovat klassinen välttämätön lähestymistapa, jotta vältetään epäjohdonmukaiset ohjelmatilat, jotka saattavat lopulta aiheuttaa ohjelman viallisen käyttäytymisen.
Jos mukana on FPC:n sysUtils unit niin kaikki ajonaikaiset virheet muuttuvat poikkeuksiksi. (kts. system.runTimeErrors yksityiskohdat). Toisin kuin ajonaikaiset virheet ne jotka voidaan ottaa kiinni try...except on...do ... end lohkoilla edellyttäen että käytetään poikkeuksia sallivia kääntäjän tiloja kuten{$mode ObjFPC} tai {$mode Delphi}. Ajonaikainen virhe saa ohjelman päättymään, kun taas poikkeusten käyttö voi antaa mahdollisuuden korjata ongelma. Standardin mukaisen system.runError
normaalia käyttäytymistä voidaan muuttaa määrittämällä ei-nil arvo system.errorProc:lle.Katso myös
- Appendix D in the Free Pascal User's Guide: “Run-time errors”
- procedure runError
- “Line numbers in run-time error backtraces” in the Free Pascal User's Guide
system.returnNilIfGrowHeapFails
From the Free Pascal wiki, page "runtime error/fi", as it stood on 2022-08-06 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
