File.delete() can't throw apart from SecurityException which I think would be rare. But File.delete() returns false if the file wasn't deleted.

I thought about rolling back the DB change if we can't delete the file on disk but thought better of it, because getting the attachments directory into an inconsistent state would cause real hassles then.