throwable详解

到目前为止,我们已经捕获了异常,但却没有对异常对象本身做任何处理.正如前面的程序所示,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)