All errors on Special:Redirect results in message 'redirect-not-exists', but the redirect can also not happen for invalid input.
For example the type=user and value= non-numeric shows the same as for non-exist user.
The special page should use more specific error messages. I would change all functions in dispatch() to return Status objects and have the url as value (Status::newGood( $url ))
For type=file the reason for the invalid title should be taken from MalformedTitleException (by TitleParser)