You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.2 KiB
69 lines
2.2 KiB
//==============================================================================
|
|
//
|
|
// Copyright (c) 2018-
|
|
// Authors:
|
|
// * Joachim Klein <klein@tcs.inf.tu-dresden.de> (TU Dresden)
|
|
//
|
|
//------------------------------------------------------------------------------
|
|
//
|
|
// This file is part of PRISM.
|
|
//
|
|
// PRISM 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 2 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// PRISM 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 PRISM; if not, write to the Free Software Foundation,
|
|
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
//
|
|
//==============================================================================
|
|
|
|
package common;
|
|
|
|
/** Helper class for converting stack traces to strings for output */
|
|
public class StackTraceHelper
|
|
{
|
|
/** Default limit for number of lines in a stack trace */
|
|
public static final int DEFAULT_STACK_TRACE_LIMIT = 25;
|
|
|
|
/**
|
|
* Get a string representation of the stack trace for the Throwable
|
|
* (up to the given limit of lines).
|
|
* @param throwable the throwable
|
|
* @param limit the limit
|
|
*/
|
|
public static String asString(Throwable throwable, int limit)
|
|
{
|
|
return asString(throwable.getStackTrace(), limit);
|
|
}
|
|
|
|
/**
|
|
* Get a string representation of the stack trace for the given stack trace array
|
|
* (up to the given limit of lines).
|
|
* @param elements array of stack trace elements (zero-th element is top of stack)
|
|
* @param limit the limit (0 = no limit)
|
|
*/
|
|
public static String asString(StackTraceElement[] elements, int limit)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
int i = 0;
|
|
for (StackTraceElement element : elements) {
|
|
if (limit != 0 && i++ > limit) {
|
|
sb.append(" ....\n");
|
|
break;
|
|
}
|
|
sb.append(" at ");
|
|
sb.append(element);
|
|
sb.append("\n");
|
|
}
|
|
|
|
return sb.toString();
|
|
}
|
|
}
|