title: Why Java’s exception-handling statements should not be considered a general mechanism for nonlocal branching?
body: <p>Going through Herbert Schildt : The Complete Reference Chapter 10 Exception Handling</p>
  
  <blockquote>
    <p>Exception handling provides a powerful mechanism for controlling complex programs that
        have many dynamic run-time characteristics. It is important to think of try, throw, and catch
        as clean ways to handle errors and unusual boundary conditions in your program’s logic.
        Unlike some other languages in which error return codes are used to indicate failure, Java
        uses exceptions. Thus, when a method can fail, have it throw an exception. This is a cleaner
        way to handle failure modes.
        One last point: Java’s exception-handling statements should not be considered a general
        mechanism for nonlocal branching. If you do so, it will only confuse your code and make it
        hard to maintain.</p>
  </blockquote>
  
  <p>What does he mean by the term 'nonlocal branching'? Kindly elaborate with the help of a nice example?</p>
  
  <p>Note this question was asked on coderanch, but the answers there were primarily based on individual
      opinions and as such it didn't yield a root-based answer (I wasn't able to clarify the point with the discussions over there).</p>