diff --git a/Code/Core/otbWrapperInputImageParameter.cxx b/Code/Core/otbWrapperInputImageParameter.cxx index 08554076cd7563c3f715bdc1722e7c48c6b37bb3..f25fbed3cad49a81b8bea53e1cf5460665f7668b 100644 --- a/Code/Core/otbWrapperInputImageParameter.cxx +++ b/Code/Core/otbWrapperInputImageParameter.cxx @@ -16,6 +16,7 @@ =========================================================================*/ #include "otbWrapperInputImageParameter.h" +#include "itksys/SystemTools.hxx" namespace otb { @@ -35,13 +36,29 @@ InputImageParameter::~InputImageParameter() void InputImageParameter::SetFromFileName(const std::string& filename) { - ImageFileReaderType::Pointer reader = ImageFileReaderType::New(); - reader->SetFileName(filename); - reader->UpdateOutputInformation(); + // First clear previous file choosen + this->ClearValue(); - // everything went fine, store the object references - m_Reader = reader; - m_Image = reader->GetOutput(); + // TODO : when the logger will be available, redirect the exception + // in the logger (like what is done in MsgReporter) + if (!filename.empty() + && itksys::SystemTools::FileExists(filename.c_str())) + { + ImageFileReaderType::Pointer reader = ImageFileReaderType::New(); + reader->SetFileName(filename); + try + { + reader->UpdateOutputInformation(); + } + catch(itk::ExceptionObject & err) + { + this->ClearValue(); + } + + // everything went fine, store the object references + m_Reader = reader; + m_Image = reader->GetOutput(); + } } std::string