A blog I read that seemed to conclude quite well was something along the lines of.
I expect users to enter stupid data into my forms so it's not an exception if something happens more than 1/1000 times/uses it's expected not an exception.
However the community seems to be tied but I agree with you completely sometimes handling the validation error gracefully by giving the users a first or last page in your example is better than halting everything and throwing/catching an exception.
Until recently I have always handled errors without exceptions (error logs, functions etc...) and currently feeling my way into their uses/best practice.
Forms/user input data are still to this day every coders/programmers nightmare you have to plan for everything and then plan some more as there is always that 1 person that will find how to break it.