Structured programming, a revolutionary innovation in programming, was popularized in Edsger Dijkstra's seminal 1967 article "Goto statement considered harmful". Younger programmers aren't aware of the truly sorry state of programming when the only method available to alter program flow was the unconstrained goto statement. All they see is the reflexive antipathy to 'goto' from those of us old enough to remember the spaghetti code of yesteryear.
Unlike the earlier respondents, I feel there is an valid use for the goto statement. I have found in rare instances that using 'goto' is helpful to trap error cases into a common clean-up snippet immediately before returning an error. In most cases, you can avoid the goto by either rearranging your logic or by refactoring a large function into several smaller functions.
As a C programmer, I'm intrigued by the C++ exception handling mechanism. I'm not familiar enough with it to determine if it is the magic bullet that eliminates this last valid use of 'goto' or if it is itself a kind of 'goto' that should be avoided.