1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * you may not use this file except in compliance with the License. 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage com.android.dx.dex.code; 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport com.android.dx.rop.cst.CstType; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport com.android.dx.util.FixedSizeList; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport com.android.dx.util.Hex; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Ordered list of (exception type, handler address) entries. 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic final class CatchHandlerList extends FixedSizeList 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project implements Comparable<CatchHandlerList> { 2899409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project /** {@code non-null;} empty instance */ 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static final CatchHandlerList EMPTY = new CatchHandlerList(0); 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 3299409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * Constructs an instance. All indices initially contain {@code null}. 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 3499409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param size {@code >= 0;} the size of the list 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public CatchHandlerList(int size) { 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(size); 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Gets the element at the given index. It is an error to call 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this with the index for an element which was never set; if you 4399409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * do that, this will throw {@code NullPointerException}. 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 4599409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param n {@code >= 0, < size();} which index 4699409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @return {@code non-null;} element at that index 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Entry get(int n) { 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return (Entry) get0(n); 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** {@inheritDoc} */ 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String toHuman() { 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return toHuman("", ""); 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Get the human form of this instance, prefixed on each line 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * with the string. 60de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro * 6199409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param prefix {@code non-null;} the prefix for every line 6299409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param header {@code non-null;} the header for the first line (after the 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * first prefix) 6499409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @return {@code non-null;} the human form 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String toHuman(String prefix, String header) { 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StringBuilder sb = new StringBuilder(100); 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int size = size(); 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(prefix); 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(header); 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append("catch "); 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < size; i++) { 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Entry entry = get(i); 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (i != 0) { 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(",\n"); 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(prefix); 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(" "); 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ((i == (size - 1)) && catchesAll()) { 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append("<any>"); 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(entry.getExceptionType().toHuman()); 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 88de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(" -> "); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project sb.append(Hex.u2or4(entry.getHandler())); 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return sb.toString(); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns whether or not this instance ends with a "catch-all" 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * handler. 99de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro * 10099409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @return {@code true} if this instance ends with a "catch-all" 10199409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * handler or {@code false} if not 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean catchesAll() { 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int size = size(); 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (size == 0) { 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Entry last = get(size - 1); 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return last.getExceptionType().equals(CstType.OBJECT); 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the entry at the given index. 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11799409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param n {@code >= 0, < size();} which index 11899409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param exceptionType {@code non-null;} type of exception handled 11999409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param handler {@code >= 0;} exception handler address 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void set(int n, CstType exceptionType, int handler) { 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project set0(n, new Entry(exceptionType, handler)); 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the entry at the given index. 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 12899409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param n {@code >= 0, < size();} which index 12999409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param entry {@code non-null;} the entry to set at {@code n} 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void set(int n, Entry entry) { 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project set0(n, entry); 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** {@inheritDoc} */ 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int compareTo(CatchHandlerList other) { 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (this == other) { 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Easy out. 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int thisSize = size(); 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int otherSize = other.size(); 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int checkSize = Math.min(thisSize, otherSize); 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < checkSize; i++) { 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Entry thisEntry = get(i); 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Entry otherEntry = other.get(i); 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int compare = thisEntry.compareTo(otherEntry); 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (compare != 0) { 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return compare; 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (thisSize < otherSize) { 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return -1; 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (thisSize > otherSize) { 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 1; 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Entry in the list. 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static class Entry implements Comparable<Entry> { 16899409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project /** {@code non-null;} type of exception handled */ 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final CstType exceptionType; 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 17199409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project /** {@code >= 0;} exception handler address */ 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final int handler; 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs an instance. 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 17799409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param exceptionType {@code non-null;} type of exception handled 17899409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @param handler {@code >= 0;} exception handler address 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Entry(CstType exceptionType, int handler) { 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (handler < 0) { 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new IllegalArgumentException("handler < 0"); 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (exceptionType == null) { 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException("exceptionType == null"); 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.handler = handler; 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.exceptionType = exceptionType; 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** {@inheritDoc} */ 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int hashCode() { 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return (handler * 31) + exceptionType.hashCode(); 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** {@inheritDoc} */ 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean equals(Object other) { 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (other instanceof Entry) { 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return (compareTo((Entry) other) == 0); 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 208de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** {@inheritDoc} */ 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int compareTo(Entry other) { 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (handler < other.handler) { 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return -1; 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else if (handler > other.handler) { 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 1; 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return exceptionType.compareTo(other.exceptionType); 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 219de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Gets the exception type handled. 222de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro * 22399409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @return {@code non-null;} the exception type 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public CstType getExceptionType() { 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return exceptionType; 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Gets the handler address. 231de75089fb7216d19e9c22cce4dc62a49513477d3Carl Shapiro * 23299409883d9c4c0ffb49b070ce307bb33a9dfe9f1The Android Open Source Project * @return {@code >= 0;} the handler address 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int getHandler() { 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return handler; 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 239