Difference between revisions of "runtime error/fi"
Line 17: | Line 17: | ||
jotka saattavat lopulta aiheuttaa ohjelman viallisen käyttäytymisen. | jotka saattavat lopulta aiheuttaa ohjelman viallisen käyttäytymisen. | ||
− | Jos mukana on FPC:n {{Doc|package=RTL|unit=sysutils|text=<syntaxhighlight lang="pascal" | + | Jos mukana on FPC:n {{Doc|package=RTL|unit=sysutils|text=<syntaxhighlight lang="pascal" inline>sysUtils</syntaxhighlight> unit}} niin kaikki ajonaikaiset virheet muuttuvat [[Exceptions/fi|poikkeuksiksi]]. |
− | (kts. {{Doc|package=RTL|unit=system|identifier=runtimeerrors|text=<syntaxhighlight lang="pascal" | + | (kts. {{Doc|package=RTL|unit=system|identifier=runtimeerrors|text=<syntaxhighlight lang="pascal" inline>system.runTimeErrors</syntaxhighlight>}} yksityiskohdat). |
− | Toisin kuin ajonaikaiset virheet ne jotka voidaan ottaa kiinni [[Try/fi| <syntaxhighlight lang="pascal" | + | Toisin kuin ajonaikaiset virheet ne jotka voidaan ottaa kiinni [[Try/fi| <syntaxhighlight lang="pascal" inline>try</syntaxhighlight>]]...[[Except/fi| <syntaxhighlight lang="pascal" inline>except</syntaxhighlight>]] |
− | [[On/fi| <syntaxhighlight lang="pascal" | + | [[On/fi| <syntaxhighlight lang="pascal" inline>on</syntaxhighlight>]]...[[Do/fi| <syntaxhighlight lang="pascal" inline>do</syntaxhighlight>]] ... [[End/fi| <syntaxhighlight lang="pascal" inline>end</syntaxhighlight>]] [[Block/fi|lohkoilla]] edellyttäen että käytetään poikkeuksia sallivia kääntäjän tiloja kuten[[Mode ObjFPC|<syntaxhighlight lang="pascal" inline>{$mode ObjFPC}</syntaxhighlight>]] tai [[Mode Delphi|<syntaxhighlight lang="pascal" inline>{$mode Delphi}</syntaxhighlight>]]. |
Ajonaikainen virhe saa ohjelman päättymään, kun taas poikkeusten käyttö voi antaa mahdollisuuden korjata ongelma. | Ajonaikainen virhe saa ohjelman päättymään, kun taas poikkeusten käyttö voi antaa mahdollisuuden korjata ongelma. | ||
− | Standardin mukaisen {{Doc|package=RTL|unit=system|identifier=runerror|text=<syntaxhighlight lang="pascal" | + | Standardin mukaisen {{Doc|package=RTL|unit=system|identifier=runerror|text=<syntaxhighlight lang="pascal" inline>system.runError</syntaxhighlight>}} |
− | normaalia käyttäytymistä voidaan muuttaa määrittämällä ei-[[Nil/fi|<syntaxhighlight lang="pascal" | + | normaalia käyttäytymistä voidaan muuttaa määrittämällä ei-[[Nil/fi|<syntaxhighlight lang="pascal" inline>nil</syntaxhighlight>]] arvo {{Doc|package=RTL|unit=system|identifier=errorproc|text=<syntaxhighlight lang="pascal" inline>system.errorProc</syntaxhighlight>}}:lle. |
== Katso myös == | == Katso myös == | ||
* [https://www.freepascal.org/docs-html/user/userap4.html Appendix D in the Free Pascal User's Guide: “Run-time errors”] | * [https://www.freepascal.org/docs-html/user/userap4.html Appendix D in the Free Pascal User's Guide: “Run-time errors”] | ||
− | * [[RunError|procedure <syntaxhighlight lang="pascal" | + | * [[RunError|procedure <syntaxhighlight lang="pascal" inline>runError</syntaxhighlight>]] |
* [https://www.freepascal.org/docs-html/current/user/userse58.html “Line numbers in run-time error backtraces”] in the Free Pascal User's Guide | * [https://www.freepascal.org/docs-html/current/user/userse58.html “Line numbers in run-time error backtraces”] in the Free Pascal User's Guide | ||
− | * {{Doc|package=RTL|unit=system|identifier=returnnilifgrowheapfails|text=<syntaxhighlight lang="pascal" | + | * {{Doc|package=RTL|unit=system|identifier=returnnilifgrowheapfails|text=<syntaxhighlight lang="pascal" inline>system.returnNilIfGrowHeapFails</syntaxhighlight>}} |
Latest revision as of 17:21, 6 August 2022
│
English (en) │
suomi (fi) │
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
arvosystem.errorProc
:lle.