异常堆栈信息输出到字符串

Exception类有一个printStackTrace()方法,它能够从发生异常的方法中输出堆栈信息,默认输出位置是System.err。但是,有时候我们要把堆栈信息输出到System.err之外的其他地方,例如在出现异常时把堆栈信息输出到email,或者用一个对话框显示出来。 

printStackTrace()方法有几种不同的类型: 

· printStackTrace(),输出到标准错误流。 

· printStackTrace(PrintStream ps),输出到名为ps的PrintStream。 

· printStackTrace(PrintWriter pw),输出到名为pw的PrintWriter。 

我们可以用最后一种printStackTrace()方法把堆栈信息保存到String对象。只要在String对象中捕获了堆栈信息,我们就可以方便地在应用的任何地方使用这些信息了。下面的代码片断示范了具体的实现步骤: 

private String getStackTraceAsString() {
    // StringWriter将包含堆栈信息
    StringWriter stringWriter = new StringWriter();
    //必须将StringWriter封装成PrintWriter对象,
    //以满足printStackTrace的要求
    PrintWriter printWriter = new PrintWriter(stringWriter);
    //获取堆栈信息
    e.printStackTrace(printWriter);
    //转换成String,并返回该String
    StringBuffer error = stringWriter.getBuffer();
    return error.toString();
}


你可能感兴趣的:(基础)