2013-11-15 3 views
0

Я пишу компонент, который читает данные из определенного типа файла. В настоящее время у него есть свойство для пути к файлу - я бы хотел, чтобы этот блок выходил как можно труднее, когда передавался недопустимый файл/нет файла.Каким образом можно создать исключение для недопустимых настроек свойств?

Выбрасывание исключения заставляет его прекратить выполнение, но также удаляет блок с классной доски, пока я тестирую (?), Что заставляет меня думать, что есть более «одобренный» способ сделать это.

Мое текущее решение что-то вроде:

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

Есть еще один способ, чтобы остановить, если что-то не так, то мы надеемся, остановить все дальнейшую обработку, а?

ответ

0

Вы ознакомились с компонентом Data Reader в базовых компонентах? Он также имеет путь к файлу в качестве входа. Она имеет дело с этим во время разговора onConfigure, как показано ниже:

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") 

И затем снова в сервисной функции, возвращая NOOP.

def process(self): 

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

Это не единственный способ справиться с недопустимым вводом. Это дизайнерское решение, которое зависит от разработчика.

Если вам нужны дополнительные компоненты, чтобы узнать о проблеме в другом месте в цепочке, у вас есть несколько вариантов. Вы можете использовать бит конца потока, доступный в реализациях portio porto, чтобы сигнализировать компонентам нисходящего потока, что нет дополнительных данных. Затем они могут использовать эту информацию для очистки и закрытия. Вы также можете использовать обмен сообщениями для отправки сообщения на канал событий, и всем, кто подписался на этот канал, может быть сообщено о сообщении. Опять же, это дизайнерское решение.

Смежные вопросы