I agree that exceptions are a great language feature, but this isn't an exception case. An exception is if something goes wrong, like I couldn't open the file to read it or the file was corrupt. The purpose of the method is to ask a yes or no question, so a response of no, IMO, isn't an exception case.

The tuple return was to give the caller logging options. If it's invalid, they can show the found size, which would be handy in the event nothing downloaded and the file was 0 length. Ignoring that twist, it's like any is_* method that returns a boolean to answer the question.