Here you can find the source of exceptionStackToString(Throwable x)
public static String exceptionStackToString(Throwable x)
//package com.java2s; /*//from w w w . j a v a2s.co m Copyright 2011 Northbranchlogic, Inc. This file is part of Parallel Processing with EC2 (ppe). ppe is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ppe is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with ppe. If not, see <http://www.gnu.org/licenses/>. */ public class Main { public static String exceptionStackToString(Throwable x) { if (x == null) return ("NULL exception!"); return (throwableToString(x, "")); } private static String throwableToString(Throwable x, String prefix) { String mess = x.toString() + "\n\n" + stackTraceToString(x.getStackTrace()); Throwable cause = x.getCause(); if (cause != null) { mess += "\nCAUSE:\n" + throwableToString(cause, prefix + " "); } return (mess); } /** @return the stack trace and causal message as string * * @param x * @return */ public static String toString(Throwable x) { return (exceptionStackToString(x) + "\n\n" + getExceptionMessage(x)); } /** Converts a <tt>StackTrace[]</tt> to a <tt>String</tt>, one * item per line. */ public static String stackTraceToString(StackTraceElement[] trace) { if (trace == null) return ("NULL stack trace."); String s = ""; for (int i = 0; i < trace.length; i++) { if (trace[i] != null) s += trace[i].toString() + "\n"; else s += "null trace element at [" + i + "]"; } return (s); } public static String getExceptionMessage(Throwable x) { Throwable c = x.getCause(); if ((c != null) && (c.getMessage() != null) && (c.getMessage().length() > 0)) { return (c.getMessage()); } else return (x.toString()); } }