/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Test exception throwing. */ public class Throw { public void throwNullPointerException() { throw new NullPointerException("npe!"); } public void throwArithmeticException() { throw new ArithmeticException(); } public void one() { System.out.println("Throw.one"); try { throwNullPointerException(); Main.assertTrue(false); } catch (Exception ex) { // good return; } Main.assertTrue(false); } public void twoA() { System.out.println("Throw.twoA"); boolean gotN = false; boolean gotA = false; boolean gotWeird = false; try { try { throwArithmeticException(); gotWeird = true; } catch (ArithmeticException ae) { gotA = true; } } catch (NullPointerException npe) { gotN = true; } Main.assertTrue(gotA); Main.assertTrue(!gotN); Main.assertTrue(!gotWeird); } public void twoN() { System.out.println("Throw.twoN"); boolean gotN = false; boolean gotA = false; boolean gotWeird = false; try { try { throwNullPointerException(); gotWeird = true; } catch (ArithmeticException ae) { gotA = true; } } catch (NullPointerException npe) { gotN = true; } Main.assertTrue(!gotA); Main.assertTrue(gotN); Main.assertTrue(!gotWeird); } public void rethrow() { System.out.println("Throw.rethrow"); boolean caught = false; boolean lly = false; boolean second = false; try { try { throwNullPointerException(); Main.assertTrue(false); } catch (Exception ex) { if (ex instanceof ArithmeticException) { Main.assertTrue(false); } if (ex instanceof NullPointerException) { caught = true; throw (NullPointerException) ex; } } finally { lly = true; } } catch (Exception ex) { second = true; } Main.assertTrue(caught); Main.assertTrue(lly); Main.assertTrue(second); } public static void run() { Throw th = new Throw(); th.one(); th.twoA(); th.twoN(); th.rethrow(); } }