标签:
1 class Exc2 { 2 public static void main(String args[]) { 3 int d, a; 4 try { // monitor a block of code. 5 d = 0; 6 a = 42 / d; 7 System.out.println("This will not be printed."); 8 } catch (ArithmeticException e) { // catch divide-by-zero error 9 System.out.println("Division by zero."); 10 } 11 System.out.println("After catch statement."); 12 } 13 }
该程序输出如下:
1 Division by zero. 2 After catch statement.
注意在try块中的对println( )的调用是永远不会执行的。一旦异常被引发,程序控制由try块转到catch块。执行永远不会从catch块“返回”到try块。因此,“This will not be printed。”
1 // Handle an exception and move on. 2 import java.util.Random; 3 4 class HandleError { 5 public static void main(String args[]) { 6 int a=0, b=0, c=0; 7 Random r = new Random(); 8 9 for(int i=0; i<32000; i++) { 10 try { 11 b = r.nextInt(); 12 c = r.nextInt(); 13 a = 12345 / (b/c); 14 } catch (ArithmeticException e) { 15 System.out.println("Division by zero."); 16 a = 0; // set a to zero and continue 17 } 18 System.out.println("a: " + a); 19 } 20 } 21 }
显示一个异常的描述
Throwable重载toString( )方法(由Object定义),所以它返回一个包含异常描述的字符串。你可以通过在println( )中传给异常一个参数来显示该异常的描述。例如,前面程序的catch块可以被重写成1 catch (ArithmeticException e) { 2 System.out.println("Exception: " + e); 3 a = 0; // set a to zero and continue 4 }
当这个版本代替原程序中的版本,程序在标准javaJDK解释器下运行,每一个被零除错误显示下面的消息:
1 Exception: java.lang.ArithmeticException: / by zero
尽管在上下文中没有特殊的值,显示一个异常描述的能力在其他情况下是很有价值的——特别是当你对异常进行实验和调试时。
标签:
原文地址:http://www.cnblogs.com/Coda/p/4461697.html