blob: 5ff62acfa616b91003c2dd787089ca102e77a94e (
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
|
CLASS Trace
Id : INTEGER
PROCEDURE DELETE()
OUTPUT "destroy:", Id
ENDPROCEDURE
ENDCLASS
CLASS Bomb
PROCEDURE DELETE()
OUTPUT "bomb"
THROW
ENDPROCEDURE
ENDCLASS
PROCEDURE Normal()
DECLARE First : Trace
First.Id <- 1
DECLARE Last : Bomb
ENDPROCEDURE
PROCEDURE DuringUnwind()
DECLARE Last : Bomb
THROW
ENDPROCEDURE
PROCEDURE InCatch()
DECLARE First : Trace
First.Id <- 2
TRY
THROW
CATCH
DECLARE Last : Bomb
RETURN
ENDTRY
ENDPROCEDURE
PROCEDURE InTry()
DECLARE Last : Bomb
TRY
RETURN
CATCH
OUTPUT "return caught locally"
ENDTRY
ENDPROCEDURE
FUNCTION Result() RETURNS INTEGER
DECLARE Local : Trace
Local.Id <- 3
RETURN Local.Id
ENDFUNCTION
TRY
CALL Normal()
CATCH
OUTPUT "normal caught"
ENDTRY
TRY
CALL InCatch()
CATCH
OUTPUT "catch exit caught"
ENDTRY
CALL InTry()
OUTPUT Result()
TRY
CALL DuringUnwind()
CATCH
OUTPUT "unwind throw caught"
ENDTRY
|