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