xref: /aosp_15_r20/dalvik/dx/tests/046-dex-exceptions/Blort.java (revision 055d459012065f78d96b68be8421640240ddf631)
1*055d4590SKeyi Gui /*
2*055d4590SKeyi Gui  * Copyright (C) 2007 The Android Open Source Project
3*055d4590SKeyi Gui  *
4*055d4590SKeyi Gui  * Licensed under the Apache License, Version 2.0 (the "License");
5*055d4590SKeyi Gui  * you may not use this file except in compliance with the License.
6*055d4590SKeyi Gui  * You may obtain a copy of the License at
7*055d4590SKeyi Gui  *
8*055d4590SKeyi Gui  *      http://www.apache.org/licenses/LICENSE-2.0
9*055d4590SKeyi Gui  *
10*055d4590SKeyi Gui  * Unless required by applicable law or agreed to in writing, software
11*055d4590SKeyi Gui  * distributed under the License is distributed on an "AS IS" BASIS,
12*055d4590SKeyi Gui  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*055d4590SKeyi Gui  * See the License for the specific language governing permissions and
14*055d4590SKeyi Gui  * limitations under the License.
15*055d4590SKeyi Gui  */
16*055d4590SKeyi Gui 
17*055d4590SKeyi Gui public class Blort
18*055d4590SKeyi Gui {
maybeThrow(int x)19*055d4590SKeyi Gui     public static int maybeThrow(int x) {
20*055d4590SKeyi Gui         if (x < 10) {
21*055d4590SKeyi Gui             throw new RuntimeException();
22*055d4590SKeyi Gui         }
23*055d4590SKeyi Gui 
24*055d4590SKeyi Gui         return x;
25*055d4590SKeyi Gui     }
26*055d4590SKeyi Gui 
exTest1(int x)27*055d4590SKeyi Gui     public static int exTest1(int x) {
28*055d4590SKeyi Gui         try {
29*055d4590SKeyi Gui             maybeThrow(x);
30*055d4590SKeyi Gui             return 1;
31*055d4590SKeyi Gui         } catch (RuntimeException ex) {
32*055d4590SKeyi Gui             return 2;
33*055d4590SKeyi Gui         }
34*055d4590SKeyi Gui     }
35*055d4590SKeyi Gui 
exTest2(int x)36*055d4590SKeyi Gui     public static int exTest2(int x) {
37*055d4590SKeyi Gui         try {
38*055d4590SKeyi Gui             x++;
39*055d4590SKeyi Gui             x = maybeThrow(x);
40*055d4590SKeyi Gui         } catch (RuntimeException ex) {
41*055d4590SKeyi Gui             return 1;
42*055d4590SKeyi Gui         }
43*055d4590SKeyi Gui 
44*055d4590SKeyi Gui         // Since the code in the try block can't possibly throw, there
45*055d4590SKeyi Gui         // should not be a catch in the final result.
46*055d4590SKeyi Gui         try {
47*055d4590SKeyi Gui             x++;
48*055d4590SKeyi Gui         } catch (RuntimeException ex) {
49*055d4590SKeyi Gui             return 2;
50*055d4590SKeyi Gui         }
51*055d4590SKeyi Gui 
52*055d4590SKeyi Gui         try {
53*055d4590SKeyi Gui             return maybeThrow(x);
54*055d4590SKeyi Gui         } catch (RuntimeException ex) {
55*055d4590SKeyi Gui             return 3;
56*055d4590SKeyi Gui         }
57*055d4590SKeyi Gui     }
58*055d4590SKeyi Gui }
59