Index: numpy/core/records.py
===================================================================
--- numpy/core/records.py	(revision 3979)
+++ numpy/core/records.py	(working copy)
@@ -152,16 +152,15 @@
     def __setattr__(self, attr, val):
         if attr in ['setfield', 'getfield', 'dtype']:
             raise AttributeError, "Cannot set '%s' attribute" % attr
-        try:
-            return nt.void.__setattr__(self, attr, val)
-        except AttributeError:
-            pass
         fielddict = nt.void.__getattribute__(self, 'dtype').fields
         res = fielddict.get(attr, None)
         if res:
             return self.setfield(val, *res[:2])
         else:
-            raise AttributeError, "'record' object has no "\
+            try:
+                return nt.void.__setattr__(self, attr, val)
+            except AttributeError:
+                raise AttributeError, "'record' object has no "\
                   "attribute '%s'" % attr
 
     def pprint(self):
