Difference between revisions of "runtime error"
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 == |
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 == |
− | === | + | |
+ | === 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 === |
+ | |||
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 == |
+ | |||
* [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
.