Difference between revisions of "runtime error"

From Free Pascal wiki
Jump to navigationJump to search
m (Undo revision 135802 by Kai Burghardt (talk): redundant)
Tag: Undo
m (Fix typos)
Line 3: Line 3:
 
A run-time error is an irreparable error condition that arises during the [[runtime|run-time]], i.e. the execution of a [[Executable program|program]].
 
A run-time error is an irreparable error condition that arises during the [[runtime|run-time]], i.e. the execution of a [[Executable program|program]].
  
== behavior ==
+
== Behavior ==
 
The [[FPC]] inserts code to detect a vast number of error situations.
 
The [[FPC]] inserts code to detect a vast number of error situations.
 
If such a situation is encountered, the standard [[RTL|run-time library]] will initiate the termination of the program.
 
If such a situation is encountered, the standard [[RTL|run-time library]] will initiate the termination of the program.
Line 9: Line 9:
 
This is the safest and cheapest error treatment.
 
This is the safest and cheapest error treatment.
  
== comparative remarks ==
+
== Comparative remarks ==
=== compile-time errors ===
+
 
 +
=== Compile-time errors ===
 +
 
 
In contrast to [[compile-time error|compile-time errors]], which the compiler detects during [[Compile time|compilation]], run-time errors depend on the state of the program, thus can not be foreseen in advance.
 
In contrast to [[compile-time error|compile-time errors]], which the compiler detects during [[Compile time|compilation]], run-time errors depend on the state of the program, thus can not be foreseen in advance.
 
If a compile-time error is encountered, no executable program is generated.
 
If a compile-time error is encountered, no executable program is generated.
  
=== exceptions ===
+
=== Exceptions ===
 +
 
 
Run-time errors are the classical imperative approach in order to avoid inconsistent program states, which may eventually cause faulty program behavior.
 
Run-time errors are the classical imperative approach in order to avoid inconsistent program states, which may eventually cause faulty program behavior.
 
If FPC's {{Doc|package=RTL|unit=sysutils|text=<syntaxhighlight lang="pascal" enclose="none">sysUtils</syntaxhighlight> unit}} is included, all run-time errors become [[Exceptions|exceptions]] (cf. {{Doc|package=RTL|unit=system|identifier=runtimeerrors|text=<syntaxhighlight lang="pascal" enclose="none">system.runTimeErrors</syntaxhighlight>}} for details).
 
If FPC's {{Doc|package=RTL|unit=sysutils|text=<syntaxhighlight lang="pascal" enclose="none">sysUtils</syntaxhighlight> unit}} is included, all run-time errors become [[Exceptions|exceptions]] (cf. {{Doc|package=RTL|unit=system|identifier=runtimeerrors|text=<syntaxhighlight lang="pascal" enclose="none">system.runTimeErrors</syntaxhighlight>}} for details).
Line 22: Line 25:
 
This standard behavior of {{Doc|package=RTL|unit=system|identifier=runerror|text=<syntaxhighlight lang="pascal" enclose="none">system.runError</syntaxhighlight>}} can be altered by assigning a non-[[Nil|<syntaxhighlight lang="pascal" enclose="none">nil</syntaxhighlight>]] value to {{Doc|package=RTL|unit=system|identifier=errorproc|text=<syntaxhighlight lang="pascal" enclose="none">system.errorProc</syntaxhighlight>}}.
 
This standard behavior of {{Doc|package=RTL|unit=system|identifier=runerror|text=<syntaxhighlight lang="pascal" enclose="none">system.runError</syntaxhighlight>}} can be altered by assigning a non-[[Nil|<syntaxhighlight lang="pascal" enclose="none">nil</syntaxhighlight>]] value to {{Doc|package=RTL|unit=system|identifier=errorproc|text=<syntaxhighlight lang="pascal" enclose="none">system.errorProc</syntaxhighlight>}}.
  
== see also ==
+
== See also ==
 +
 
 
* [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" enclose="none">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" enclose="none">system.returnNilIfGrowHeapFails</syntaxhighlight>}}

Revision as of 14:11, 8 August 2020

English (en) suomi (fi)

A run-time error is an irreparable error condition that arises during the run-time, i.e. the execution of a program.

Behavior

The FPC inserts code to detect a vast number of error situations. If such a situation is encountered, the standard run-time library will initiate the termination of the program. A run-time error number, and the address the error occurred at is being printed. This is the safest and cheapest error treatment.

Comparative remarks

Compile-time errors

In contrast to compile-time errors, which the compiler detects during compilation, run-time errors depend on the state of the program, thus can not be foreseen in advance. If a compile-time error is encountered, no executable program is generated.

Exceptions

Run-time errors are the classical imperative approach in order to avoid inconsistent program states, which may eventually cause faulty program behavior. If FPC's sysUtils unit is included, all run-time errors become exceptions (cf. system.runTimeErrors for details). Unlike run-time errors those can be caught by try... except on...do ... end blocks, provided a mode allowing exceptions – such as {$mode ObjFPC} or {$mode Delphi} – is being used. A run-time error causes the program to terminate, while an exception may give the opportunity to “fix” the problem. This standard behavior of system.runError can be altered by assigning a non-nil value to system.errorProc.

See also