}
     }
   
-
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
     virtual void GenerateInputRequestedRegion() ITK_OVERRIDE;
+#else
+   virtual void GenerateInputRequestedRegion() throw(InvalidRequestedRegionError) ITK_OVERRIDE;
+#endif
     void EnlargeOutputRequestedRegion (DataObject * output) ITK_OVERRIDE;
 
   protected:
 
   template <class TInputImage, class TOutputImage,class TtNorm>
   void 
   RelativePositionPropImageFilter<TInputImage,TOutputImage,TtNorm>
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
   ::GenerateInputRequestedRegion()
+#else
+  ::GenerateInputRequestedRegion() throw (InvalidRequestedRegionError)
+#endif
   {
     // call the superclass' implementation of this method
     Superclass::GenerateInputRequestedRegion ();
 
     void SetOutputParametersFromImage( const OutputImageConstPointer  image );
 
 
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
     void Initialize(void);
+#else
+    void Initialize(void) throw (itk::ExceptionObject);
+#endif
 
   protected:
 
 
   template <class InputImageType, class OutputImageType>
   void 
   BackProjectImageFilter<InputImageType, OutputImageType>
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
   ::Initialize( void )
+#else
+  ::Initialize( void ) throw (itk::ExceptionObject)
+#endif
   {
     //Change the origin of the 2D input
     typename  InputImageType::ConstPointer inputPtr=this->GetInput();
 
     *  (1) making sure that all the components are present and plugged
     *      together correctly,
     *  (3) allocate memory for bin data structures. */
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
   virtual void Initialize(void) ITK_OVERRIDE;
+#else
+  virtual void Initialize(void) throw ( ExceptionObject ) ITK_OVERRIDE;
+#endif
 
   /** Get the derivatives of the match measure. */
   void GetDerivative( const TransformParametersType & parameters,
 
 template <class TFixedImage, class TMovingImage>
 void
 CorrelationRatioImageToImageMetric<TFixedImage,TMovingImage>
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
 ::Initialize(void)
+#else
+::Initialize(void) throw ( ExceptionObject )
+#endif
 {
 
   this->Superclass::Initialize();
 
    *  (2) uniformly select NumberOfSpatialSamples within
    *      the FixedImageRegion, and
    *  (3) allocate memory for pdf data structures. */
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
   virtual void Initialize(void) ITK_OVERRIDE;
+#else
+  virtual void Initialize(void) throw ( itk::ExceptionObject ) ITK_OVERRIDE;
+#endif
 
   /**  Get the value. */
   MeasureType GetValue( const ParametersType & parameters ) const ITK_OVERRIDE;
 
 template <class TFixedImage, class TMovingImage>
 void
 NormalizedCorrelationImageToImageMetric<TFixedImage,TMovingImage>
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
 ::Initialize(void)
+#else
+::Initialize(void) throw ( itk::ExceptionObject )
+#endif
 {
 
   this->Superclass::Initialize();
 
    *  (2) uniformly select NumberOfSpatialSamples within
    *      the FixedImageRegion, and
    *  (3) allocate memory for pdf data structures. */
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
   virtual void Initialize(void) ITK_OVERRIDE;
+#else
+  virtual void Initialize(void) throw ( itk::ExceptionObject ) ITK_OVERRIDE;
+#endif
 
   /**  Get the value. */
   MeasureType GetValue( const ParametersType & parameters ) const ITK_OVERRIDE;
 
 template <class TFixedImage, class TMovingImage>
 void
 NormalizedCorrelationImageToImageMetricFor3DBLUTFFD<TFixedImage,TMovingImage>
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
 ::Initialize(void)
+#else
+::Initialize(void) throw ( itk::ExceptionObject )
+#endif
 {
 
   this->Superclass::Initialize();
 
    *  (2) uniformly select NumberOfSpatialSamples within
    *      the FixedImageRegion, and
    *  (3) allocate memory for pdf data structures. */
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
   virtual void Initialize(void) ITK_OVERRIDE;
+#else
+  virtual void Initialize(void) throw ( ExceptionObject ) ITK_OVERRIDE;
+#endif
 
   /**  Get the value. */
   MeasureType GetValue( const ParametersType & parameters ) const ITK_OVERRIDE;
 
 template <class TFixedImage, class TMovingImage>
 void
 MattesMutualInformationImageToImageMetricFor3DBLUTFFD<TFixedImage,TMovingImage>
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
 ::Initialize(void)
+#else
+::Initialize(void) throw ( ExceptionObject )
+#endif
 {
   this->Superclass::Initialize();
   this->Superclass::MultiThreadingInitialize();
 
    *  (2) uniformly select NumberOfSpatialSamples within
    *      the FixedImageRegion, and
    *  (3) allocate memory for pdf data structures. */
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
   virtual void Initialize(void) ITK_OVERRIDE;
+#else
+  virtual void Initialize(void) throw ( ExceptionObject ) ITK_OVERRIDE;
+#endif
 
   /**  Get the value. */
   MeasureType GetValue( const ParametersType & parameters ) const ITK_OVERRIDE;
 
 template <class TFixedImage, class TMovingImage>
 void
 MeanSquaresImageToImageMetricFor3DBLUTFFD<TFixedImage,TMovingImage>
+#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 ))
 ::Initialize(void)
+#else
+::Initialize(void) throw ( ExceptionObject )
+#endif
 {
 
   this->Superclass::Initialize();