1 // Demonstrate throw.
 2 class ThrowDemo {
 3     static void demoproc() {
 4       try {
 5          throw new NullPointerException("demo");
 6       } catch(NullPointerException e) {
 7          System.out.println("Caught inside demoproc.");
 8          throw e; // rethrow the exception
 9       }
10    }
11 
12    public static void main(String args[]) {
13       try {
14          demoproc();
15       } catch(NullPointerException e) {
16          System.out.println("Recaught: " + e);
17       }
18    }
19 }

该程序有两个机会处理相同的错误。首先,main()设立了一个异常关系然后调用demoproc( )。 demoproc( )方法然后设立了另一个异常处理关系并且立即抛出一个新的NullPointerException实例,NullPointerException在下一行被捕获。异常于是被再次抛出。下面是输出结果:

1 Caught inside demoproc.
2 Recaught: java.lang.NullPointerException: demo

该程序还阐述了怎样创建Java的标准异常对象,特别注意下面这一行:

1    throw new NullPointerException("demo");

这里,new用来构造一个NullPointerException实例。所有的Java内置的运行时异常有两个构造函数:一个没有参数,一个带有一个字符串参数。当用到第二种形式时,参数指定描述异常的字符串。如果对象用作 print( )或println( )的参数时,该字符串被显示。这同样可以通过调用getMessage( )来实现,getMessage( )是由Throwable定义的。

相关文章: