2014年计算机二级JAVA解析:Java的\异常\2

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2014年4月14日
2014年计算机二级JAVA解析:Java的\异常\28.4try与catch

  通常我们希望自己来处理\"异常\"并继续运行。可以用try来指定一块预防所有\"异常\"的的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的\"异常\"的类型。例如,下面的例子是在前面的例子的基础上构造的,但它包含一个try程序块和一个catch子句。classexc1{publicstaticvoidmain(stringargs[]){try{intd=0; inta=42/d;}catch(arithmeticexceptione){system.out.println(\"divisionbyzero\");}}}

  catch子句的目标是解决\"异常\"情况,把变量设到合理的状态,并象没有出错一样继续运行。如果一个子程序不处理某个\"异常\",则返到上一级处理,直到最外一级。

  8.5多个catch子句

  在某情况下,同一段程序可能产生不止一种\"异常\"情况。你可以放置多个catch子句,其中每一种\"异常\"类型都将被检查,第一个与?reg;匹配的就会被执行。如果一个类和其子类都有的话,应把子类放在前面,否则将永远不会到达子类。下面是一个有两个catch子句的程序的例子。

  classMultiCatch{publicstaticvoidmain(Stringargs[]){try{inta

  =args.length;System.out.println(\"a=\"+a);intb=42/a;intc[]=

  {1};c[42]=99;}catch(ArithmeticExceptione){System.out.println(\"div

  by0:\"+e);}catch(ArrayIndexOutOfBoundsExceptione)

  {system.out.println(\"arrayindexoob:\"+e);}}}

  如果在程序运行时不跟参数,将会引起一个0做除数的\"异常\",因为a的值为0。如果我们提?copy;一个命令行参数,将不会产生这个\"异常\",因为a的值大于0。但会引起一个ArrayIndexOutOfBoundexception的\"异常\",因为整型数组c的长度是 1,却给c[42]赋值。下面是以上两种情况的运行结果。

  C:\\>javaMultiCatcha=0divby0:java.lang.arithmeticexception:/by

  zeroC:\\>javaMutiCatch1a=1arrayindexoob:

  java.lang.ArrayIndexOutOfBoundsException:42

  8.6try语句的嵌套

  你可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部,写另一个try语句保护其他代码。每当遇到一个try语句,\"异常\"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种\"异常\"进行处理,堆栈就会展开,直到遇到有处理这种\"异常\"的try语句。下面是一个try语句嵌套的例子。

  classMultiNest{staticvoidprocedure(){try{intc[]={1}:c[42]

  =99;}catch(ArrayIndexOutOfBoundsexceptione)

首页 1 2 尾页

相关文章