@Override
	public boolean add(IClass e) {
		assert e != null;

		if (e.isChildOrEqual(e.getClassHolder(	).getType(RuntimeException.class))) {
			return false;
		}

		boolean hasExist = false;
		for (IClass thrExc : this.exceptionEntryList) {
			if (e.isChildOrEqual(thrExc)) {
				hasExist = true;
				break;
			}
		}

		if (!hasExist) {
			for (int i = 0; i < exceptionEntryList.size();) {
				IClass thrExc = exceptionEntryList.get(i);
				if (thrExc.isChildOrEqual(e)) {
					exceptionEntryList.remove(i);
				} else {
					i++;
				}
			}
			this.exceptionEntryList.add(e);
			return true;
		} else {
			return false;
		}

	}