diff --git a/Code/ApplicationEngine/otbWrapperApplication.cxx b/Code/ApplicationEngine/otbWrapperApplication.cxx
index 64c57e09d1572b75998c8b8b2a95dd84e0d5d112..7da18b37fae8baf0dde1e7512ef2299f4d82de78 100644
--- a/Code/ApplicationEngine/otbWrapperApplication.cxx
+++ b/Code/ApplicationEngine/otbWrapperApplication.cxx
@@ -38,6 +38,7 @@
 
 #include "otbWrapperTypes.h"
 #include <exception>
+#include "itkMacro.h"
 
 namespace otb
 {
@@ -613,29 +614,35 @@ int Application::GetParameterInt(std::string parameter)
     ChoiceParameter* paramChoice = dynamic_cast<ChoiceParameter*>(param);
     ret = paramChoice->GetValue();
     }
+  else
+    {
+     itkExceptionMacro("parameter can't be casted to int");
+    }
 
-  //TODO: exception if not found ?
   return ret;
 }
 
 float Application::GetParameterFloat(std::string parameter)
 {
-  float ret = 0;
+  float ret = 0.0;
   Parameter* param = GetParameterByKey(parameter);
 
-  if (dynamic_cast<FloatParameter*>(param))
-   {
-    FloatParameter* paramFloat = dynamic_cast<FloatParameter*>(param);
+  if (dynamic_cast<FloatParameter*> (param))
+    {
+    FloatParameter* paramFloat = dynamic_cast<FloatParameter*> (param);
     ret = paramFloat->GetValue();
     }
+  else
+    {
+    itkExceptionMacro("parameter can't be casted to float");
+    }
 
-  //TODO: exception if not found ?
   return ret;
 }
 
 std::string Application::GetParameterString(std::string parameter)
 {
-  std::string ret;
+  std::string ret="";
   Parameter* param = GetParameterByKey(parameter);
 
   if (dynamic_cast<ChoiceParameter*>(param))
@@ -688,8 +695,11 @@ std::string Application::GetParameterString(std::string parameter)
     OutputVectorDataParameter* paramDown = dynamic_cast<OutputVectorDataParameter*>(param);
     ret = paramDown->GetFileName();
     }
+  else
+   {
+    itkExceptionMacro("parameter can't be casted to string");
+    }
 
-  //TODO: exception if not found ?
   return ret;
 }
 
@@ -715,28 +725,36 @@ std::vector<std::string> Application::GetParameterStringList(std::string paramet
         StringListParameter* paramDown = dynamic_cast<StringListParameter*> (param);
         ret = paramDown->GetValue();
         }
+      else
+       {
+            itkExceptionMacro("parameter can't be casted to StringList");
+       }
+
   return ret;
 }
 
 
 FloatVectorImageType* Application::GetParameterImage(std::string parameter)
 {
-  FloatVectorImageType::Pointer ret;
+  FloatVectorImageType::Pointer ret = NULL;
   Parameter* param = GetParameterByKey(parameter);
 
-  if (dynamic_cast<InputImageParameter*>(param))
+  if (dynamic_cast<InputImageParameter*> (param))
     {
-    InputImageParameter* paramDown = dynamic_cast<InputImageParameter*>(param);
+    InputImageParameter* paramDown = dynamic_cast<InputImageParameter*> (param);
     ret = paramDown->GetImage();
     }
+  else
+    {
+    itkExceptionMacro("parameter can't be casted to ImageType");
+    }
 
-  //TODO: exception if not found ?
   return ret;
 }
 
 FloatVectorImageListType* Application::GetParameterImageList(std::string parameter)
 {
-  FloatVectorImageListType::Pointer ret;
+  FloatVectorImageListType::Pointer ret=NULL;
   Parameter* param = GetParameterByKey(parameter);
 
   if (dynamic_cast<InputImageListParameter*>(param))
@@ -744,14 +762,17 @@ FloatVectorImageListType* Application::GetParameterImageList(std::string paramet
     InputImageListParameter* paramDown = dynamic_cast<InputImageListParameter*>(param);
     ret = paramDown->GetImageList();
     }
+  else
+    {
+    itkExceptionMacro("parameter can't be casted to ImageListType");
+    }
 
-  //TODO: exception if not found ?
   return ret;
 }
 
 ComplexFloatVectorImageType* Application::GetParameterComplexImage(std::string parameter)
 {
-  ComplexFloatVectorImageType::Pointer ret;
+  ComplexFloatVectorImageType::Pointer ret=NULL;
   Parameter* param = GetParameterByKey(parameter);
 
   if (dynamic_cast<ComplexInputImageParameter*>(param))
@@ -759,14 +780,17 @@ ComplexFloatVectorImageType* Application::GetParameterComplexImage(std::string p
     ComplexInputImageParameter* paramDown = dynamic_cast<ComplexInputImageParameter*>(param);
     ret = paramDown->GetImage();
     }
+  else
+    {
+    itkExceptionMacro("parameter can't be casted to ComplexImageType");
+    }
 
-  //TODO: exception if not found ?
   return ret;
 }
 
 VectorDataType* Application::GetParameterVectorData(std::string parameter)
 {
-  VectorDataType::Pointer ret;
+  VectorDataType::Pointer ret=NULL;
   Parameter* param = GetParameterByKey(parameter);
 
   if (dynamic_cast<InputVectorDataParameter*>(param))
@@ -774,14 +798,16 @@ VectorDataType* Application::GetParameterVectorData(std::string parameter)
     InputVectorDataParameter* paramDown = dynamic_cast<InputVectorDataParameter*>(param);
     ret = paramDown->GetVectorData();
     }
-
-  //TODO: exception if not found ?
+  else
+    {
+    itkExceptionMacro("parameter can't be casted to Vector Data");
+    }
   return ret;
 }
 
 VectorDataListType* Application::GetParameterVectorDataList(std::string parameter)
 {
-  VectorDataListType::Pointer ret;
+  VectorDataListType::Pointer ret=NULL;
   Parameter* param = GetParameterByKey(parameter);
 
   if (dynamic_cast<InputVectorDataListParameter*>(param))
@@ -789,15 +815,17 @@ VectorDataListType* Application::GetParameterVectorDataList(std::string paramete
     InputVectorDataListParameter* paramDown = dynamic_cast<InputVectorDataListParameter*>(param);
     ret = paramDown->GetVectorDataList();
     }
-
-  //TODO: exception if not found ?
+  else
+   {
+    itkExceptionMacro("parameter can't be casted to Vector Data List");
+   }
   return ret;
 }
 
 
 std::string Application::GetParameterAsString(std::string paramKey)
 {
-  std::string ret;
+  std::string ret="";
   ParameterType type = this->GetParameterType( paramKey );
 
   if( type == ParameterType_String || type == ParameterType_Filename
@@ -819,38 +847,46 @@ std::string Application::GetParameterAsString(std::string paramKey)
       oss << this->GetParameterFloat( paramKey );
       ret = oss.str();
     }
-
-  //TODO: exception if not found ?
-  return ret;
+  else
+    {
+      itkExceptionMacro("parameter can't be casted to string");
+    }
+   return ret;
 }
 
 ImagePixelType Application::GetParameterOutputImagePixelType(std::string parameter)
 {
   Parameter* param = GetParameterByKey(parameter);
-  ImagePixelType ret;
+  ImagePixelType ret=ImagePixelType_int8; //by default to avoid warning
 
   if (dynamic_cast<OutputImageParameter*>(param))
     {
     OutputImageParameter* paramDown = dynamic_cast<OutputImageParameter*>(param);
     ret = paramDown->GetPixelType();
     }
+  else
+    {
+      itkExceptionMacro("unable to find PixelType");
+    }
 
-  //TODO: exception if not found ?
   return ret;
 }
 
 ComplexImagePixelType Application::GetParameterComplexOutputImagePixelType(std::string parameter)
 {
   Parameter* param = GetParameterByKey(parameter);
-  ComplexImagePixelType ret;
+  ComplexImagePixelType ret=ComplexImagePixelType_float;  //by default to avoid warning
 
   if (dynamic_cast<ComplexOutputImageParameter*>(param))
     {
     ComplexOutputImageParameter* paramDown = dynamic_cast<ComplexOutputImageParameter*>(param);
     ret = paramDown->GetComplexPixelType();
     }
+  else
+    {
+       itkExceptionMacro("unable to find PixelType");
+    }
 
-  //TODO: exception if not found ?
   return ret;
 }