179d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng/* 279d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * Copyright (C) 2009 The Android Open Source Project 379d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * 479d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * Licensed under the Apache License, Version 2.0 (the "License"); 579d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * you may not use this file except in compliance with the License. 679d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * You may obtain a copy of the License at 779d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * 879d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * http://www.apache.org/licenses/LICENSE-2.0 979d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * 1079d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * Unless required by applicable law or agreed to in writing, software 1179d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * distributed under the License is distributed on an "AS IS" BASIS, 1279d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1379d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * See the License for the specific language governing permissions and 1479d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng * limitations under the License. 1579d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng */ 1679d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng 1779d173cad420b2ef99a09688e603df7ea4f890e9Ben Chengpublic class Main { 1879d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng static class ArrayObj { 1979d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng int[] array; 2079d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng 2179d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng int getArrayElement(int i) throws NullPointerException { 2279d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng return array[i]; 2379d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng } 2479d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng } 2579d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng 2679d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng public static void main(String[] args) { 2779d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng ArrayObj arrayObj2 = new ArrayObj(); 2879d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng int sum = 0; 2979d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng int exception = 0; 3079d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng 3179d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng for (int i = 0; i < 1024; i++) { 3279d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng try { 3379d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng // A hot method invocation that always encounters exceptions 3479d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng sum += arrayObj2.getArrayElement(i); 3579d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng } catch (NullPointerException npe) { 3679d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng exception++; 3779d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng } 3879d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng } 3979d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng System.out.println("sum = " + sum); 4079d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng System.out.println("exception = " + exception); 4179d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng } 4279d173cad420b2ef99a09688e603df7ea4f890e9Ben Cheng} 43