Reprint Please specify the Source:Jiq ' s technical Blog
Public voidtestexception () {int a[] = {1,2,3};int q = 0;try{for (int i=0;i<a.length;i++) {a[i]/= q;}} catch (ArithmeticException h) {System.out.print ("arithmeticexception\n"); Run}catch (Exception e) {System.out.print ("exception\n"); Will not run. and must be placed behind the ArithmeticException/** * The larger exception must not only be placed in the back * and placed in the back will not be run (by the earlier range of the smaller * abnormal intercept), then what is the point??? */}finally{system.out.print ("finally\n");}} <span style= "color: #3333ff;" >output</span>arithmeticexceptionfinally
* Key points1:despiteArithmeticExceptioninherit fromException. But when it happensArithmeticExceptionException
* and captures it, it simply captures the actual occurrence of the exception. Not because Exception is its parent class and
* run exception that catch clause.
* Essentials 2 : But suppose you try to have a larger range exception catch statement put to catch
* Catch clause unreachable Error " Unreachablecatch block for ArithmeticException.
* Itis already handled by the catch block for Exception "
* ( parent " must be placed behind, assuming there are no inheritance relationships, for example Span style= "font-family:"times New roman"" >classnotfoundexception
* and the ArithmeticException of the Catch there is no relationship between clauses.
Java Fundamentals: Exception capture Order