Thinking more, maybe this can be made even simpler, since it's just making an **attempt** at cleaning up the file, it can just re-raise whatever exception happened like this:

    try:
        ...
    except:
        try:
             os.remove(self.xml_file) 
        except OSError:
            logging.debug("Remove %s failed." % self.xml_file)
        raise   # re-raise the original exception