/* * Fernflower - The Analytical Java Decompiler * http://www.reversed-java.com * * (C) 2008 - 2010, Stiver * * This software is NEITHER public domain NOR free software * as per GNU License. See license.txt for more details. * * This software is distributed WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. */ package org.jetbrains.java.decompiler.code; import java.util.ArrayList; import java.util.List; import org.jetbrains.java.decompiler.code.interpreter.Util; import org.jetbrains.java.decompiler.struct.StructContext; public class ExceptionTable { private List handlers = new ArrayList(); public ExceptionTable() {} public ExceptionTable(List handlers) { this.handlers = handlers; } public ExceptionHandler getHandlerByClass(StructContext context, int line, String valclass, boolean withany) { ExceptionHandler res = null; // no handler found for(ExceptionHandler handler : handlers) { if(handler.from<=line && handler.to>line) { String name = handler.exceptionClass; if((withany && name==null) || // any -> finally or synchronized handler (name!=null && Util.instanceOf(context, valclass, name))) { res = handler; break; } } } return res; } public List getHandlers() { return handlers; } }