The only time you would get this error if you for instance would restore a database without the files. Because then you would have in the database the has contents set on true but you still would not be able to retrieve the file because it is simply not there. You could try to retrieve the document first and check that in combination with the has contents is true. Then you know that there is a document and that the document has contents.
But I would investigate furter why you could have a record in the database about a filedocument that no longer is there on the disk.