10.2.4 访问异常信息

10.2.4 访问异常信息

如果程序需要在catch块中访问异常对象的相关信息,则可以通过访问catch块的后异常形参来获得。当Java运行时决定调用某个catch块来处理该异常对象时,会将异常对象赋给catch块后的异常参数,程序即可通过该参数来获得异常的相关信息。

异常对象的常用方法

所有的异常对象都包含了如下几个常用方法。

方法 描述
getMessage() 返回该异常的详细描述字符串。
printStackTrace() 将该异常的跟踪栈信息输出到标准错误输出。
printStackTrace(PrintStream s) 将该异常的跟踪栈信息输出到指定输出流。
getStackTrace() 返回该异常的跟踪栈信息。

下面例子程序演示了程序如何访问异常信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.io.*;

public class AccessExceptionMsg
{
public static void main(String[] args)
{
try
{
FileInputStream fis = new FileInputStream("a.txt");
}
catch (IOException ioe)
{
System.out.println(ioe.getMessage());
ioe.printStackTrace();
}
}
}

上面程序调用了Exception对象的getMessage()方法来得到异常对象的详细信息,也使用了printStackTrace()方法来打印该异常的跟踪信息。运行上面程序,控制台输出如下:

1
2
3
4
5
6
7
a.txt (系统找不到指定的文件。)
java.io.FileNotFoundException: a.txt (系统找不到指定的文件。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at AccessExceptionMsg.main(AccessExceptionMsg.java:9)

控制台的输出可以看到异常的详细描述信息:a.txt (系统找不到指定的文件。),这就是调用异常的getMessage()方法返回的字符串。下面更详细的信息是该异常的跟踪栈信息,关于异常的跟踪栈信息后面还有更详细的介绍,此处不再赘述。