1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 /** 18 * Test exception throwing. 19 */ 20 public class Throw { throwNullPointerException()21 public void throwNullPointerException() { 22 throw new NullPointerException("npe!"); 23 } 24 throwArithmeticException()25 public void throwArithmeticException() { 26 throw new ArithmeticException(); 27 } 28 one()29 public void one() { 30 System.out.println("Throw.one"); 31 try { 32 throwNullPointerException(); 33 Main.assertTrue(false); 34 } catch (Exception ex) { 35 // good 36 return; 37 } 38 39 Main.assertTrue(false); 40 } 41 twoA()42 public void twoA() { 43 System.out.println("Throw.twoA"); 44 boolean gotN = false; 45 boolean gotA = false; 46 boolean gotWeird = false; 47 48 try { 49 try { 50 throwArithmeticException(); 51 gotWeird = true; 52 } catch (ArithmeticException ae) { 53 gotA = true; 54 } 55 } catch (NullPointerException npe) { 56 gotN = true; 57 } 58 59 Main.assertTrue(gotA); 60 Main.assertTrue(!gotN); 61 Main.assertTrue(!gotWeird); 62 } 63 twoN()64 public void twoN() { 65 System.out.println("Throw.twoN"); 66 boolean gotN = false; 67 boolean gotA = false; 68 boolean gotWeird = false; 69 70 try { 71 try { 72 throwNullPointerException(); 73 gotWeird = true; 74 } catch (ArithmeticException ae) { 75 gotA = true; 76 } 77 } catch (NullPointerException npe) { 78 gotN = true; 79 } 80 81 Main.assertTrue(!gotA); 82 Main.assertTrue(gotN); 83 Main.assertTrue(!gotWeird); 84 } 85 rethrow()86 public void rethrow() { 87 System.out.println("Throw.rethrow"); 88 boolean caught = false; 89 boolean lly = false; 90 boolean second = false; 91 92 try { 93 try { 94 throwNullPointerException(); 95 Main.assertTrue(false); 96 } catch (Exception ex) { 97 if (ex instanceof ArithmeticException) { 98 Main.assertTrue(false); 99 } 100 if (ex instanceof NullPointerException) { 101 caught = true; 102 throw (NullPointerException) ex; 103 } 104 } finally { 105 lly = true; 106 } 107 } catch (Exception ex) { 108 second = true; 109 } 110 111 Main.assertTrue(caught); 112 Main.assertTrue(lly); 113 Main.assertTrue(second); 114 } 115 run()116 public static void run() { 117 Throw th = new Throw(); 118 119 th.one(); 120 th.twoA(); 121 th.twoN(); 122 th.rethrow(); 123 } 124 } 125