到目前为止,我们已经捕获了异常,但却没有对异常对象本身做任何处理.正如前面的程序所示,catch语句指定了异常类型和一个形参.这个形参用于接收异常对象.因为所有的异常都是Throwable的子类,所以所有的异常都支持Throwable定义的方法,下表列出了若干常用的方法:
方法
|
描述
|
throwable fillInStackTrace()
|
返回一个包含完整堆栈跟踪的throwable对象,该对象可以被重新抛出
|
string getLocalizedMessage()
|
返回异常的本地描述
|
string getMessage()
|
返回异常的描述
|
void printStackTrace()
|
显示堆栈跟踪
|
void printStackTrace(printStream stram)
|
将堆栈跟踪发送到指定流
|
void printStackTrace(printwriter stream) |
将堆栈跟踪发送到指定流
|
string toString()
|
返回一个包含异常的完整描述的string对象.当输出一个Throwable对象时,println()调用该方法
|
在Throwable定义的方法中,最让人感兴趣的是printStackTrace()和ToString()这两个方法.可以通过调用printStackTrace()来显示标准的错误消息和导致异常发生的方法调用记录.使用toString()可以检索标准错误消息.当异常做为println()的一个实参时也可以调用toString()方法.下面的程序对这些方法进行了说明:
public class test2 { // @param args public static void main(String args[]) { try { Rethrow.getException(); }catch(Throwable exc) { System.out.println("standard message is:"); System.out.println(exc); System.out.println("Stack trace:"); exc.printStackTrace(); } } } class Rethrow { public static void getException() { try { System.out.println("before throw"); throw new ArithmeticException(); } catch(ArithmeticException exc) { System.out.println("exception caught"); throw exc; } } }
输出:
before throw exception caught standard message is: java.lang.ArithmeticException Stack trace: java.lang.ArithmeticException at javaTest.Rethrow.getException(test2.java:26) at javaTest.test2.main(test2.java:10)