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