class CatchCondition extends Condition {

	private final LFLog LOG = LFLoggerManager.getLogger(this.getClass());

	@Override
	public void executeCondition(Integer slotIndex) throws Exception {<FILL_FUNCTION_BODY>}

	@Override
	public ConditionTypeEnum getConditionType() {
		return ConditionTypeEnum.TYPE_CATCH;
	}

	public Executable getCatchItem() {
		return this.getExecutableOne(ConditionKey.CATCH_KEY);
	}

	public void setCatchItem(Executable executable) {
		this.addExecutable(ConditionKey.CATCH_KEY, executable);
	}

	public Executable getDoItem() {
		return this.getExecutableOne(ConditionKey.DO_KEY);
	}

	public void setDoItem(Executable executable) {
		this.addExecutable(ConditionKey.DO_KEY, executable);
	}

}

		Slot slot = DataBus.getSlot(slotIndex);
		try {
			Executable catchExecutable = this.getCatchItem();
			if (ObjectUtil.isNull(catchExecutable)) {
				String errorInfo = "no catch item find";
				throw new CatchErrorException(errorInfo);
			}
			catchExecutable.setCurrChainId(this.getCurrChainId());
			catchExecutable.execute(slotIndex);
		}catch (ChainEndException e){
			//ChainEndException属于用户主动结束流程，不应该进入Catch的流程
			throw e;
		}catch (Exception e) {
			LOG.error("catch exception:" + e.getMessage(), e);
			Executable doExecutable = this.getDoItem();
			if (ObjectUtil.isNotNull(doExecutable)) {
				doExecutable.setCurrChainId(this.getCurrChainId());
				doExecutable.execute(slotIndex);
			}
			// catch之后需要把exception给清除掉
			// 正如同java的catch一样，异常自己处理了，属于正常流程了，整个流程状态应该是成功的
			DataBus.getSlot(slotIndex).removeException();
		}
	
<methods>public non-sealed void <init>() ,public void addExecutable(com.yomahub.liteflow.flow.element.Executable) ,public void addExecutable(java.lang.String, com.yomahub.liteflow.flow.element.Executable) ,public void execute(java.lang.Integer) throws java.lang.Exception,public abstract void executeCondition(java.lang.Integer) throws java.lang.Exception,public List<com.yomahub.liteflow.flow.element.Node> getAllNodeInCondition() ,public abstract com.yomahub.liteflow.enums.ConditionTypeEnum getConditionType() ,public java.lang.String getCurrChainId() ,public java.lang.String getCurrChainName() ,public Map<java.lang.String,List<com.yomahub.liteflow.flow.element.Executable>> getExecutableGroup() ,public List<com.yomahub.liteflow.flow.element.Executable> getExecutableList() ,public List<com.yomahub.liteflow.flow.element.Executable> getExecutableList(java.lang.String) ,public com.yomahub.liteflow.flow.element.Executable getExecutableOne(java.lang.String) ,public com.yomahub.liteflow.enums.ExecuteableTypeEnum getExecuteType() ,public java.lang.String getId() ,public java.lang.String getTag() ,public void setCurrChainId(java.lang.String) ,public void setExecutableList(List<com.yomahub.liteflow.flow.element.Executable>) ,public void setId(java.lang.String) ,public void setTag(java.lang.String) <variables>private java.lang.String currChainId,private final Map<java.lang.String,List<com.yomahub.liteflow.flow.element.Executable>> executableGroup,private java.lang.String id,private java.lang.String tag