for document in self._docs[::-1]:  # Close in lifo (reverse) order.  We clone the list to make sure we go through all docs even as they are deleted
             if not self.CloseDocument(document, force):
                 return False
-            document.DeleteAllViews() # Implicitly delete the document when the last view is removed
+            if document:
+                document.DeleteAllViews() # Implicitly delete the document when the last view is removed
         return True
 
 
                 newDoc.SetDocumentName(temp.GetDocumentName())
                 newDoc.SetDocumentTemplate(temp)
                 if not newDoc.OnOpenDocument(path):
-                    newDoc.DeleteAllViews()  # Implicitly deleted by DeleteAllViews
                     frame = newDoc.GetFirstView().GetFrame()
+                    newDoc.DeleteAllViews()  # Implicitly deleted by DeleteAllViews
                     if frame:
                         frame.Destroy() # DeleteAllViews doesn't get rid of the frame, so we'll explicitly destroy it.
                     return None