Index: /XIOS/dev/XIOS_DEV_CMIP6/src/attribute_template.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/attribute_template.hpp	(revision 1477)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/attribute_template.hpp	(revision 1478)
@@ -52,4 +52,6 @@
             void set(const CAttributeTemplate& attr) ;
             void reset(void) ;
+            void checkEmpty(void) const;
+
 
             void setInheritedValue(const CAttributeTemplate& attr );
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/attribute_template_impl.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/attribute_template_impl.hpp	(revision 1477)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/attribute_template_impl.hpp	(revision 1478)
@@ -67,12 +67,8 @@
       }
 
-
-      template <class T>
-         T CAttributeTemplate<T>::getValue(void) const
-      {
-        try {
-          return CType<T>::get() ;
-        }
-        catch (xios::CException & exc)
+      template <class T>
+      void CAttributeTemplate<T>::checkEmpty(void) const
+      {
+        if (CType<T>::empty)
         {
           StdString msg("On checking attribute with id=");
@@ -82,4 +78,11 @@
           ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << msg);
         }
+      }
+
+
+      template <class T>
+         T CAttributeTemplate<T>::getValue(void) const
+      {
+        return CType<T>::get() ;
 
 /*
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/type/type.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/type/type.hpp	(revision 1477)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/type/type.hpp	(revision 1478)
@@ -47,5 +47,5 @@
 
     void allocate(void) ;
-    void checkEmpty(void) const;
+    virtual void checkEmpty(void) const {return _checkEmpty();};
 
     T* ptrValue ;
@@ -63,4 +63,5 @@
     void _reset(void) ;
     bool _isEmpty() const ;
+    void _checkEmpty(void) const;
     size_t _size(void) const ;
 
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/type/type_impl.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/type/type_impl.hpp	(revision 1477)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/type/type_impl.hpp	(revision 1478)
@@ -87,5 +87,5 @@
   T& CType<T>::get(void)
   {
-    checkEmpty();
+    this->checkEmpty();
    return *ptrValue ;
   }
@@ -94,5 +94,5 @@
   const T& CType<T>::get(void) const
   {
-    checkEmpty();
+    this->checkEmpty();
     return *ptrValue ;
   }
@@ -122,15 +122,6 @@
    CType<T>::operator T&()
    {
-     try
-     {
-       checkEmpty();
-     }
-     catch (xios::CException & exc)
-     {
-       StdString msg("Data is not initialized\n");
-       ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << msg);
-     }
-
-    return *ptrValue ;
+     this->checkEmpty();
+     return *ptrValue ;
    }
 
@@ -138,5 +129,5 @@
    CType<T>::operator const T&() const
    {
-    checkEmpty();
+    this->checkEmpty();
     return *ptrValue ;
    }
@@ -145,5 +136,5 @@
    CType<T>* CType<T>::_clone(void) const
    {
-     checkEmpty();
+     this->checkEmpty();
      return new CType(*this) ;
    }
@@ -174,5 +165,5 @@
   {
     ostringstream oss;
-    checkEmpty();
+    this->checkEmpty();
     oss<<*ptrValue ;
     return oss.str() ;
@@ -182,5 +173,5 @@
   bool CType<T>::_toBuffer(CBufferOut& buffer) const
   {
-    checkEmpty();
+    this->checkEmpty();
     return buffer.put(*ptrValue) ;
   }
@@ -215,8 +206,7 @@
 
   template <typename T>
-  void CType<T>::checkEmpty(void) const
-  {
-//    if (empty) ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << "Data is not initialized") ;
-    if (empty) throw CException();
+  void CType<T>::_checkEmpty(void) const
+  {
+    if (empty) ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << "Data is not initialized") ;
   }
 
Index: /XIOS/trunk/src/attribute_template.hpp
===================================================================
--- /XIOS/trunk/src/attribute_template.hpp	(revision 1477)
+++ /XIOS/trunk/src/attribute_template.hpp	(revision 1478)
@@ -52,4 +52,6 @@
             void set(const CAttributeTemplate& attr) ;
             void reset(void) ;
+            void checkEmpty(void) const;
+
 
             void setInheritedValue(const CAttributeTemplate& attr );
@@ -57,6 +59,5 @@
             T getInheritedValue(void) const ;
             bool hasInheritedValue(void) const;
-
-            bool isEqual_(const CAttributeTemplate& attr );
+            
             bool isEqual(const CAttribute& attr );
 
@@ -95,4 +96,5 @@
 //            CAttributeTemplate(void); // Not implemented.
          private :
+          bool isEqual_(const CAttributeTemplate& attr);
           StdString _toString(void) const;
           void _fromString(const StdString & str);
Index: /XIOS/trunk/src/attribute_template_impl.hpp
===================================================================
--- /XIOS/trunk/src/attribute_template_impl.hpp	(revision 1477)
+++ /XIOS/trunk/src/attribute_template_impl.hpp	(revision 1478)
@@ -67,12 +67,8 @@
       }
 
-
-      template <class T>
-         T CAttributeTemplate<T>::getValue(void) const
-      {
-        try {
-          return CType<T>::get() ;
-        }
-        catch (xios::CException & exc)
+      template <class T>
+      void CAttributeTemplate<T>::checkEmpty(void) const
+      {
+        if (CType<T>::empty)
         {
           StdString msg("On checking attribute with id=");
@@ -82,4 +78,11 @@
           ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << msg);
         }
+      }
+
+
+      template <class T>
+         T CAttributeTemplate<T>::getValue(void) const
+      {
+        return CType<T>::get() ;
 
 /*
Index: /XIOS/trunk/src/type/type.hpp
===================================================================
--- /XIOS/trunk/src/type/type.hpp	(revision 1477)
+++ /XIOS/trunk/src/type/type.hpp	(revision 1478)
@@ -47,5 +47,5 @@
 
     void allocate(void) ;
-    void checkEmpty(void) const;
+    virtual void checkEmpty(void) const {return _checkEmpty();};
 
     T* ptrValue ;
@@ -63,4 +63,5 @@
     void _reset(void) ;
     bool _isEmpty() const ;
+    void _checkEmpty(void) const;
     size_t _size(void) const ;
 
Index: /XIOS/trunk/src/type/type_impl.hpp
===================================================================
--- /XIOS/trunk/src/type/type_impl.hpp	(revision 1477)
+++ /XIOS/trunk/src/type/type_impl.hpp	(revision 1478)
@@ -87,5 +87,5 @@
   T& CType<T>::get(void)
   {
-    checkEmpty();
+    this->checkEmpty();
    return *ptrValue ;
   }
@@ -94,5 +94,5 @@
   const T& CType<T>::get(void) const
   {
-    checkEmpty();
+    this->checkEmpty();
     return *ptrValue ;
   }
@@ -122,15 +122,6 @@
    CType<T>::operator T&()
    {
-     try
-     {
-       checkEmpty();
-     }
-     catch (xios::CException & exc)
-     {
-       StdString msg("Data is not initialized\n");
-       ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << msg);
-     }
-
-    return *ptrValue ;
+     this->checkEmpty();
+     return *ptrValue ;
    }
 
@@ -138,5 +129,5 @@
    CType<T>::operator const T&() const
    {
-    checkEmpty();
+    this->checkEmpty();
     return *ptrValue ;
    }
@@ -145,5 +136,5 @@
    CType<T>* CType<T>::_clone(void) const
    {
-     checkEmpty();
+     this->checkEmpty();
      return new CType(*this) ;
    }
@@ -174,5 +165,5 @@
   {
     ostringstream oss;
-    checkEmpty();
+    this->checkEmpty();
     oss<<*ptrValue ;
     return oss.str() ;
@@ -182,5 +173,5 @@
   bool CType<T>::_toBuffer(CBufferOut& buffer) const
   {
-    checkEmpty();
+    this->checkEmpty();
     return buffer.put(*ptrValue) ;
   }
@@ -215,8 +206,7 @@
 
   template <typename T>
-  void CType<T>::checkEmpty(void) const
-  {
-//    if (empty) ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << "Data is not initialized") ;
-    if (empty) throw CException();
+  void CType<T>::_checkEmpty(void) const
+  {
+    if (empty) ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << "Data is not initialized") ;
   }
 
