Difference between revisions of "runtime error/fi"

From Free Pascal wiki
Jump to navigationJump to search
 
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" enclose="none">sysUtils</syntaxhighlight> unit}} niin kaikki ajonaikaiset virheet muuttuvat [[Exceptions/fi|poikkeuksiksi]].
+
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" enclose="none">system.runTimeErrors</syntaxhighlight>}} yksityiskohdat).
+
(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" enclose="none">try</syntaxhighlight>]]...[[Except/fi| <syntaxhighlight lang="pascal" enclose="none">except</syntaxhighlight>]]  
+
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" enclose="none">on</syntaxhighlight>]]...[[Do/fi| <syntaxhighlight lang="pascal" enclose="none">do</syntaxhighlight>]] ... [[End/fi| <syntaxhighlight lang="pascal" enclose="none">end</syntaxhighlight>]] [[Block/fi|lohkoilla]] edellyttäen että käytetään poikkeuksia sallivia kääntäjän tiloja kuten[[Mode ObjFPC|<syntaxhighlight lang="pascal" enclose="none">{$mode ObjFPC}</syntaxhighlight>]] tai [[Mode Delphi|<syntaxhighlight lang="pascal" enclose="none">{$mode Delphi}</syntaxhighlight>]].
+
[[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" enclose="none">system.runError</syntaxhighlight>}}  
+
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" enclose="none">nil</syntaxhighlight>]] arvo {{Doc|package=RTL|unit=system|identifier=errorproc|text=<syntaxhighlight lang="pascal" enclose="none">system.errorProc</syntaxhighlight>}}:lle.
+
  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" enclose="none">runError</syntaxhighlight>]]
+
* [[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" enclose="none">system.returnNilIfGrowHeapFails</syntaxhighlight>}}
+
* {{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 arvo system.errorProc:lle.

Katso myös