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