blob: 002ef9c4919188f794955cabe5e1309b5d55679f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
-- File: Standard_ErrorHandler.cdl
-- Created: Mon Sep 28 13:41:03 1992
-- Author: Ramin BARRETO
-- <rba@sdsun4>
---Copyright: Matra Datavision 1992
class ErrorHandler from Standard
uses
Failure from Standard,
Boolean from Standard,
Address from Standard,
PErrorHandler from Standard,
Type from Standard
is
Create returns ErrorHandler;
--- Purpose: Create a ErrorHandler (to be used with try{}catch(){}).
-- It uses the "setjmp" and "longjmp" routines.
---Level: Advanced
Destroy(me: in out);
---Purpose: Unlinks and checks if there is a raised exception.
---C++: alias ~
---Level: Advanced
Unlink(me: in out);
---Purpose: Removes handler from the handlers list
---Level: Advanced
Catches(me: in out; aType: Type) returns Boolean;
---Purpose: Returns "True" if the caught exception has the same type
-- or inherits from "aType"
---Level: Advanced
Label(me: in out) returns JmpBuf from Standard;
---Purpose: Returns label for jump
---C++: inline
---C++: return &
---Level: Advanced
Abort(myclass) is private;
---Purpose: A exception is raised but it is not yet caught.
-- So Abort the current function and transmit the exception
-- to "calling routines".
-- Warning: If no catch is prepared for this exception, it displays the
-- exception name and calls "exit(1)".
---Level: Internal
Error(me) returns Failure;
---Purpose: Returns the current Error.
LastCaughtError(myclass) returns Failure;
---Purpose: Returns the caught exception.
--
---Level: Advanced
Error(myclass; aError: Failure) is private;
---Purpose: Set the Error which will be transmitted to "calling routines".
---Level: Advanced
IsInTryBlock(myclass) returns Boolean from Standard;
---Purpose: Test if the code is currently running in a try block
---Level: Internal
FindHandler(myclass; theStatus: HandlerStatus from Standard;
theUnlink: Boolean from Standard)
returns PErrorHandler from Standard is private;
---Purpose: Returns the current handler (Top in former implemntations)
fields
myPrevious : PErrorHandler from Standard;
myCaughtError : Failure from Standard;
myLabel : JmpBuf from Standard;
myStatus : HandlerStatus from Standard;
myThread : ThreadId from Standard;
myCallbackPtr : Address from Standard;
friends
class Failure,
class ErrorHandlerCallback
end ErrorHandler from Standard;
|