Difference between revisions of "Try"
From Lazarus wiki
Jump to navigationJump to searchm (Fixed syntax highlighting) |
(Add try-try-except-finally nesting case.) |
||
Line 33: | Line 33: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | To handle exceptions with an <syntaxhighlight lang="pascal" enclose="none">except</syntaxhighlight> block '''and''' also run a <syntaxhighlight lang="pascal" enclose="none">finally</syntaxhighlight> block, nest one <syntaxhighlight lang="pascal" enclose="none">try</syntaxhighlight> block in another. | ||
+ | |||
+ | <syntaxhighlight lang=pascal> | ||
+ | try | ||
+ | try | ||
+ | // code dealing with database that might generate an exception | ||
+ | except | ||
+ | // will only be executed in case of an exception | ||
+ | on E: EDatabaseError do | ||
+ | ShowMessage( 'Database error: '+ E.ClassName + #13#10 + E.Message ); | ||
+ | on E: Exception do | ||
+ | ShowMessage( 'Error: '+ E.ClassName + #13#10 + E.Message ); | ||
+ | end; | ||
+ | finally | ||
+ | // clean up database-related resources | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
+ | |||
== See also == | == See also == |
Revision as of 02:31, 8 March 2021
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
русский (ru) │
Back to Reserved words.
The reserved word try
is part of either a try
..finally
block or a
try
..except
block.
If an exception occurs while executing the code between try
and
finally
, execution resumes at finally
. If no exception occurs, the code between finally
and
end
will be executed also.
try
// code that might generate an exception
finally
// will always be executed as last statements
end;
Whenever an exception occurs, the code between except
and end
will be executed.
try
// code that might generate an exception
except
// will only be executed in case of an exception
on E: EDatabaseError do
ShowMessage( 'Database error: '+ E.ClassName + #13#10 + E.Message );
on E: Exception do
ShowMessage( 'Error: '+ E.ClassName + #13#10 + E.Message );
end;
To handle exceptions with an except
block and also run a finally
block, nest one try
block in another.
try
try
// code dealing with database that might generate an exception
except
// will only be executed in case of an exception
on E: EDatabaseError do
ShowMessage( 'Database error: '+ E.ClassName + #13#10 + E.Message );
on E: Exception do
ShowMessage( 'Error: '+ E.ClassName + #13#10 + E.Message );
end;
finally
// clean up database-related resources
end;