An empty MERGE_HEAD shouldn't happen.  If the file exists but has no content, its a bug in the program that produced it.  We probably want to abort under that condition and refuse to operate further, claiming a type of repository corruption.  That is better signaled by an exception than by a return code.