exceptionSet.add(new ObjectType(thrownException.getName()));
exceptionSet.add(ObjectTypeFactory.getInstance(thrownException.getName()));
	private void recordThrownExceptions(BasicBlock basicBlock) {		HashSet<ObjectType> exceptionSet = new HashSet<ObjectType>();		if (isAthrowBlock(basicBlock)) {			exceptionSet.add(getAthrowType(basicBlock));		} else {			InstructionHandle thrower = basicBlock.getExceptionThrower();			Instruction ins = thrower.getInstruction();						if (ins instanceof ExceptionThrower) {				// Get exceptions defined by the instruction.				// These are the "implicit" exceptions.				Class[] thrownExceptionTypes = ((ExceptionThrower) ins).getExceptions();				for (Class thrownException : thrownExceptionTypes) {					exceptionSet.add(new ObjectType(thrownException.getName()));				}								if (ins instanceof InvokeInstruction) {					// Look up the declared exceptions.					// These are the "explicit" exceptions.					try {						ObjectType[] declaredExceptionList =							Hierarchy.findDeclaredExceptions((InvokeInstruction) ins, methodGen.getConstantPool());						if (declaredExceptionList == null) {							if (DEBUG) {								System.err.println("Unknown declared exceptions for call to  " +										SignatureConverter.convertMethodSignature((InvokeInstruction)ins,methodGen.getConstantPool()) +										" in " +										SignatureConverter.convertMethodSignature(methodGen));							}							declaredExceptionList = new ObjectType[0];						}												if (declaredExceptionList.length > 0) {							hasDeclaredExceptions.set(basicBlock.getId());							for (ObjectType declaredException : declaredExceptionList) {								exceptionSet.add(declaredException);							}						}					} catch (ClassNotFoundException e) {						AnalysisContext.currentAnalysisContext().getLookupFailureCallback().reportMissingClass(e);					}				}			}		}		thrownExceptionSetMap.put(basicBlock, exceptionSet);	}