blob: 298cd3a35f0f2b3a0faf4c51207f14056fa8e8f7 (
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
|
CLASS Trace
Id : INTEGER
PROCEDURE DELETE()
OUTPUT "destroy:", Id
ENDPROCEDURE
ENDCLASS
PROCEDURE Inner()
DECLARE A : Trace
A.Id <- 1
DECLARE B : Trace
B.Id <- 2
THROW
ENDPROCEDURE
PROCEDURE Outer()
DECLARE A : Trace
A.Id <- 3
CALL Inner()
ENDPROCEDURE
PROCEDURE Check(I : INTEGER)
IF I = 2 THEN
THROW
ENDIF
ENDPROCEDURE
PROCEDURE Loop()
DECLARE I : INTEGER
FOR I <- 1 TO 2
CALL Check(I)
DECLARE Late : Trace
Late.Id <- 60
NEXT I
ENDPROCEDURE
PROCEDURE LocalCatch()
DECLARE Kept : Trace
Kept.Id <- 70
TRY
THROW
CATCH
OUTPUT "local caught"
ENDTRY
OUTPUT "still alive"
ENDPROCEDURE
DECLARE MainObject : Trace
MainObject.Id <- 100
TRY
CALL Outer()
CATCH
OUTPUT "caught"
ENDTRY
TRY
CALL Loop()
CATCH
OUTPUT "loop caught"
ENDTRY
CALL LocalCatch()
OUTPUT "uncaught next"
CALL Outer()
|