获取e.printstacktrace()打印的信息

某些情况下,我们需要获取应用打印的异常信息,这时就可以借助stringwriter和printwriter两个类来获取异常信息

具体用法如下:

        try{
            throw new nullpointerexception();
        }catch (exception e){
            stringwriter sw = new stringwriter();
            e.printstacktrace(new printwriter(sw,true));
            string infomsg = sw.tostring();
            system.out.println(infomsg);
        }

e和e.printstacktrace()方法

e初始化,也就是实例化exception类型的对象,e是此对象引用名称。然后e(引用)会自动调用exception类中指定的方法,也就出现了e.printstacktrace()。

当然,我们也可以用system语句输出,那么这两个语句有什么区别呢?

1、两个输出语句都能输出

system语句可以提示你异常发生的位置;但e.printstacktrace()可以显示更深的调用关系。

例如:程序中有继承的关系

rose extends flower ; flower extends plant;假如我们在创建 rose

的时候发生异常,那么system语句就会输出异常 at rose ,然后向外层输出

但e.printstacktrace()输出除了标准异常外,打印 at plant at flower at rose

…….再向外层调查。 在向外层调查的情况下,都一样

2、system.out.println();

当发生异常时显示你自己设定的字符串信息;e.printstacktrace();是打印异常的堆栈信息,指明错误原因。

note:其实当发生异常时,通常要处理异常,这是编程的好习惯,所以e.printstacktrace()可以方便你调试程序!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。