1
2method A.<init>():void
3{
4	.src "tryCatch.java"
5	.line 2
6	    0| move-object/16 v15, v25
7	    3| move-object/16 v14, v15
8	    6| move-object/16 v13, v14
9	.prologue_end
10	.line 2
11	    9| move-object v11, v13
12	.local v11, "this", A
13	   10| move-object v12, v11
14	   11| invoke-direct {v12}, java.lang.Throwable.<init>():void
15	   14| return-void
16}
17
18method B.<init>():void
19{
20	.src "tryCatch.java"
21	.line 6
22	    0| move-object/16 v15, v25
23	    3| move-object/16 v14, v15
24	    6| move-object/16 v13, v14
25	.prologue_end
26	.line 6
27	    9| move-object v11, v13
28	.local v11, "this", B
29	   10| move-object v12, v11
30	   11| invoke-direct {v12}, java.lang.Throwable.<init>():void
31	   14| return-void
32}
33
34method TryCatch.<init>():void
35{
36	.src "tryCatch.java"
37	.line 10
38	    0| move-object/16 v15, v25
39	    3| move-object/16 v14, v15
40	    6| move-object/16 v13, v14
41	.prologue_end
42	.line 10
43	    9| move-object v11, v13
44	.local v11, "this", TryCatch
45	   10| move-object v12, v11
46	   11| invoke-direct {v12}, java.lang.Object.<init>():void
47	   14| return-void
48}
49
50method TryCatch.foo(int):int
51{
52	.params "?"
53	.src "tryCatch.java"
54	.line 27
55	    0| move/16 v15, v27
56	    3| move/16 v14, v15
57	    6| move/16 v13, v14
58	.prologue_end
59	.line 27
60	    9| move v9, v13
61	.local v9, "x", int
62	   10| move v10, v9
63	   11| if-lez v10, Label_4
64	.line 28
65	   13| move v10, v9
66	   14| packed-switch v10, Label_5
67	.line 31
68	   17| const/4 v10, #+1 (0x00000001 | 1.40130e-45)
69	   18| move v9, v10
70Label_1:
71	.line 34
72	.end_local v9
73	   19| return v9
74Label_2:
75	.line 29
76	.restart_local v9
77	   20| new-instance v10, A
78	   22| move-object v12, v10
79	   23| move-object v10, v12
80	   24| move-object v11, v12
81	   25| invoke-direct {v11}, A.<init>():void
82	   28| throw v10
83Label_3:
84	.line 30
85	   29| new-instance v10, B
86	   31| move-object v12, v10
87	   32| move-object v10, v12
88	   33| move-object v11, v12
89	   34| invoke-direct {v11}, B.<init>():void
90	   37| throw v10
91Label_4:
92	.line 34
93	   38| const/4 v10, #+0 (0x00000000 | 0.00000)
94	   39| move v9, v10
95	   40| goto/16 Label_1
96Label_5: <aligned>
97	.line 28
98	   42| packed-switch-payload
99		    1: Label_2
100		    2: Label_3
101}
102
103method TryCatch.main(java.lang.String[]):void
104{
105	.params "?"
106	.src "tryCatch.java"
107	.line 15
108	    0| move-object/16 v15, v29
109	    3| move-object/16 v14, v15
110	    6| move-object/16 v13, v14
111	.prologue_end
112	.line 15
113	    9| move-object v7, v13
114	.local v7, "args", java.lang.String[]
115	   10| const/4 v10, #+0 (0x00000000 | 0.00000)
116	.try_begin_1
117	   11| invoke-static {v10}, TryCatch.foo(int):int
118	.try_end_1
119	  catch(B) : Label_3
120	  catch(A) : Label_4
121	  catch(...) : Label_5
122	   14| move-result v10
123Label_1:
124	.line 18
125	.line 22
126	   15| sget-object v10, java.lang.System.out
127	   17| const-string v11, "finally\n"
128	   19| const/4 v12, #+0 (0x00000000 | 0.00000)
129	   20| new-array v12, v12, java.lang.Object[]
130	   22| invoke-virtual {v10,v11,v12}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
131	   25| move-result-object v10
132Label_2:
133	.line 23
134	.line 24
135	   26| return-void
136Label_3:
137	.line 16
138	   27| move-exception v10
139	   28| move-object v8, v10
140	.try_begin_2
141	.line 17
142	.local v8, "ex", B
143	   29| sget-object v10, java.lang.System.out
144	   31| const-string v11, "catch: B\n"
145	   33| const/4 v12, #+0 (0x00000000 | 0.00000)
146	   34| new-array v12, v12, java.lang.Object[]
147	   36| invoke-virtual {v10,v11,v12}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
148	.try_end_2
149	  catch(A) : Label_4
150	  catch(...) : Label_5
151	   39| move-result-object v10
152	   40| goto/16 Label_1
153Label_4:
154	.line 19
155	.end_local v8
156	   42| move-exception v10
157	   43| move-object v8, v10
158	.try_begin_3
159	.line 20
160	.local v8, "ex", A
161	   44| sget-object v10, java.lang.System.out
162	   46| const-string v11, "catch: A\n"
163	   48| const/4 v12, #+0 (0x00000000 | 0.00000)
164	   49| new-array v12, v12, java.lang.Object[]
165	   51| invoke-virtual {v10,v11,v12}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
166	.try_end_3
167	  catch(...) : Label_5
168	   54| move-result-object v10
169	.line 22
170	   55| sget-object v10, java.lang.System.out
171	   57| const-string v11, "finally\n"
172	   59| const/4 v12, #+0 (0x00000000 | 0.00000)
173	   60| new-array v12, v12, java.lang.Object[]
174	   62| invoke-virtual {v10,v11,v12}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
175	   65| move-result-object v10
176	.line 23
177	   66| goto/16 Label_2
178Label_5:
179	.line 22
180	.end_local v8
181	   68| move-exception v10
182	   69| move-object v9, v10
183	   70| sget-object v10, java.lang.System.out
184	   72| const-string v11, "finally\n"
185	   74| const/4 v12, #+0 (0x00000000 | 0.00000)
186	   75| new-array v12, v12, java.lang.Object[]
187	   77| invoke-virtual {v10,v11,v12}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
188	   80| move-result-object v10
189	   81| move-object v10, v9
190	   82| throw v10
191}
192