2013-11-15 74 views
0

我在寫一個從特定文件類型讀取數據的組件。目前,它有一個文件路徑的屬性 - 我希望此塊在通過無效文件/找不到文件時儘可能地退出。什麼是引發無效屬性設置異常的正確方法?

拋出異常會導致它停止執行,但在測試(?)時,它也會從黑板上刪除該塊,這使我認爲有一種更「批准」的方式來執行此操作。

我目前的解決方案是這樣的:

LOG_ERROR(MyReader_i, "Unable to open file at " + Filepath); 
return FINISH; 

是否有另一種方式來阻止,如果事情是錯的,那將有望停止所有下游處理呢?

回答

0

你看過基本組件中的數據讀取器組件嗎?它也有一個文件路徑作爲輸入。它的onConfigure通話過程中與此交易,如下圖所示:通過返回NOOP

def onconfigure_prop_InputFile(self, oldvalue, newvalue): 
    self.InputFile = newvalue 
    if not os.path.exists(self.InputFile): 
     self._log.error("InputFile path provided can not be accessed") 

然後再在服務功能。

def process(self): 

    if (self.Play == False): 
     return NOOP 
    if not (os.path.exists(self.InputFile)): 
     return NOOP 

但這不是處理無效輸入的唯一方法。這是一個由開發人員決定的設計決定。

如果您希望其他組件下游瞭解鏈中其他位置的問題,您可以選擇幾個選項。您可以使用散列端口實現中提供的流結束位,向沒有附加數據的下游組件發送信號。然後他們可以使用這些信息來清理和關閉。您還可以使用消息傳遞將消息發送到事件頻道,並且可以讓任何訂閱了此事件頻道的人知道消息。再次,這是一個設計決定。

相關問題