異常捕獲節點
異常捕獲節點的作(zuò)用(yòng)是捕獲規則流中(zhōng)其它節點在執行時可(kě)能(néng)産(chǎn)生的異常,默認情況下在不添加異常捕獲節點時,如果某個節點在運行時出現了異常,那麽這個異常就會直接抛出,從而導緻執行中(zhōng)斷,為(wèi)某個規則節點添加異常捕獲節點後,一旦這個節點執行時出現異常, 那麽異常會流向其下的異常捕獲節點,我們可(kě)以在這個異常捕獲節點中(zhōng)處理(lǐ)相應異常,也可(kě)以将規則流引流到其它的節點之後,從而避免由于異常而導緻的執行中(zhōng)斷,如下图所示:
在上图當中(zhōng)我們為(wèi)“腳本1”節點添加了一個異常捕獲節點,這樣,在運行時,一旦“腳本1”節點産(chǎn)生異常,那麽規則流不會流轉到“腳本2”節點,而是流轉到“異常捕獲1”節點,然後再流轉到“腳本11”節點。 運行時我們會發現,如果“腳本1”節點正常運行,那麽規則流會正常流轉到“腳本2”節點,一旦發生異常,規則流就會流向其下的異常捕獲節點,從而改變了規則流向,同時規則計算也不會中(zhōng)斷。
異常捕獲節點有(yǒu)兩個屬性需要我們注意:
屬性名(míng) | 含義 |
---|---|
要捕獲的Exception完成類名(míng) | 默認它的值是java.lang.Exception,也就是說所有(yǒu)的異常都會被捕獲,當然我可(kě)以修改這個屬性,以使得當前節點隻會捕獲某個特定的Exception,需要注意的是我們需要輸入完整的類名(míng)(包含包名(míng)),且必須是java.lang.Exception類或子類,該屬性不能(néng)為(wèi)空 |
處理(lǐ)Exception的Bean | 一個實現了com.bstek.urule.model.flow.ExceptionHandler接口并配置到Spring中(zhōng)的Bean的ID,默認值為(wèi)urule.defaultExceptionHandler,引擎提供的一個會向控制台輸出異常堆棧的默認實現,當然我們可(kě)以根據需要自己實現一個,該屬性可(kě)以為(wèi)空 |