| |
| method A.<init>():void |
| { |
| .src "tryCatch.java" |
| .line 2 |
| 0| move-object/16 v15, v25 |
| 3| move-object/16 v14, v15 |
| 6| move-object/16 v13, v14 |
| .prologue_end |
| .line 2 |
| 9| move-object v11, v13 |
| .local v11, "this", A |
| 10| move-object v12, v11 |
| 11| invoke-direct {v12}, java.lang.Throwable.<init>():void |
| 14| return-void |
| } |
| |
| method B.<init>():void |
| { |
| .src "tryCatch.java" |
| .line 6 |
| 0| move-object/16 v15, v25 |
| 3| move-object/16 v14, v15 |
| 6| move-object/16 v13, v14 |
| .prologue_end |
| .line 6 |
| 9| move-object v11, v13 |
| .local v11, "this", B |
| 10| move-object v12, v11 |
| 11| invoke-direct {v12}, java.lang.Throwable.<init>():void |
| 14| return-void |
| } |
| |
| method TryCatch.<init>():void |
| { |
| .src "tryCatch.java" |
| .line 10 |
| 0| move-object/16 v15, v25 |
| 3| move-object/16 v14, v15 |
| 6| move-object/16 v13, v14 |
| .prologue_end |
| .line 10 |
| 9| move-object v11, v13 |
| .local v11, "this", TryCatch |
| 10| move-object v12, v11 |
| 11| invoke-direct {v12}, java.lang.Object.<init>():void |
| 14| return-void |
| } |
| |
| method TryCatch.foo(int):int |
| { |
| .params "?" |
| .src "tryCatch.java" |
| .line 27 |
| 0| move/16 v15, v27 |
| 3| move/16 v14, v15 |
| 6| move/16 v13, v14 |
| .prologue_end |
| .line 27 |
| 9| move v9, v13 |
| .local v9, "x", int |
| 10| move v10, v9 |
| 11| if-lez v10, Label_4 |
| .line 28 |
| 13| move v10, v9 |
| 14| packed-switch v10, Label_5 |
| .line 31 |
| 17| const/4 v10, #+1 (0x00000001 | 1.40130e-45) |
| 18| move v9, v10 |
| Label_1: |
| .line 34 |
| .end_local v9 |
| 19| return v9 |
| Label_2: |
| .line 29 |
| .restart_local v9 |
| 20| new-instance v10, A |
| 22| move-object v12, v10 |
| 23| move-object v10, v12 |
| 24| move-object v11, v12 |
| 25| invoke-direct {v11}, A.<init>():void |
| 28| throw v10 |
| Label_3: |
| .line 30 |
| 29| new-instance v10, B |
| 31| move-object v12, v10 |
| 32| move-object v10, v12 |
| 33| move-object v11, v12 |
| 34| invoke-direct {v11}, B.<init>():void |
| 37| throw v10 |
| Label_4: |
| .line 34 |
| 38| const/4 v10, #+0 (0x00000000 | 0.00000) |
| 39| move v9, v10 |
| 40| goto/16 Label_1 |
| Label_5: <aligned> |
| .line 28 |
| 42| packed-switch-payload |
| 1: Label_2 |
| 2: Label_3 |
| } |
| |
| method TryCatch.main(java.lang.String[]):void |
| { |
| .params "?" |
| .src "tryCatch.java" |
| .line 15 |
| 0| move-object/16 v15, v29 |
| 3| move-object/16 v14, v15 |
| 6| move-object/16 v13, v14 |
| .prologue_end |
| .line 15 |
| 9| move-object v7, v13 |
| .local v7, "args", java.lang.String[] |
| 10| const/4 v10, #+0 (0x00000000 | 0.00000) |
| .try_begin_1 |
| 11| invoke-static {v10}, TryCatch.foo(int):int |
| .try_end_1 |
| catch(B) : Label_3 |
| catch(A) : Label_4 |
| catch(...) : Label_5 |
| 14| move-result v10 |
| Label_1: |
| .line 18 |
| .line 22 |
| 15| sget-object v10, java.lang.System.out |
| 17| const-string v11, "finally\n" |
| 19| const/4 v12, #+0 (0x00000000 | 0.00000) |
| 20| new-array v12, v12, java.lang.Object[] |
| 22| invoke-virtual {v10,v11,v12}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream |
| 25| move-result-object v10 |
| Label_2: |
| .line 23 |
| .line 24 |
| 26| return-void |
| Label_3: |
| .line 16 |
| 27| move-exception v10 |
| 28| move-object v8, v10 |
| .try_begin_2 |
| .line 17 |
| .local v8, "ex", B |
| 29| sget-object v10, java.lang.System.out |
| 31| const-string v11, "catch: B\n" |
| 33| const/4 v12, #+0 (0x00000000 | 0.00000) |
| 34| new-array v12, v12, java.lang.Object[] |
| 36| invoke-virtual {v10,v11,v12}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream |
| .try_end_2 |
| catch(A) : Label_4 |
| catch(...) : Label_5 |
| 39| move-result-object v10 |
| 40| goto/16 Label_1 |
| Label_4: |
| .line 19 |
| .end_local v8 |
| 42| move-exception v10 |
| 43| move-object v8, v10 |
| .try_begin_3 |
| .line 20 |
| .local v8, "ex", A |
| 44| sget-object v10, java.lang.System.out |
| 46| const-string v11, "catch: A\n" |
| 48| const/4 v12, #+0 (0x00000000 | 0.00000) |
| 49| new-array v12, v12, java.lang.Object[] |
| 51| invoke-virtual {v10,v11,v12}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream |
| .try_end_3 |
| catch(...) : Label_5 |
| 54| move-result-object v10 |
| .line 22 |
| 55| sget-object v10, java.lang.System.out |
| 57| const-string v11, "finally\n" |
| 59| const/4 v12, #+0 (0x00000000 | 0.00000) |
| 60| new-array v12, v12, java.lang.Object[] |
| 62| invoke-virtual {v10,v11,v12}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream |
| 65| move-result-object v10 |
| .line 23 |
| 66| goto/16 Label_2 |
| Label_5: |
| .line 22 |
| .end_local v8 |
| 68| move-exception v10 |
| 69| move-object v9, v10 |
| 70| sget-object v10, java.lang.System.out |
| 72| const-string v11, "finally\n" |
| 74| const/4 v12, #+0 (0x00000000 | 0.00000) |
| 75| new-array v12, v12, java.lang.Object[] |
| 77| invoke-virtual {v10,v11,v12}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream |
| 80| move-result-object v10 |
| 81| move-object v10, v9 |
| 82| throw v10 |
| } |