Here you can find the source of getStackTraceString(Throwable throwable)
Parameter | Description |
---|---|
throwable | - throwable to convert. |
public static String getStackTraceString(Throwable throwable)
//package com.java2s; /*/*from w w w . ja v a 2 s . c o m*/ Copyright 2009-2016 Igor Polevoy Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import java.io.*; public class Main { /** * Converts stack trace to string. * * @param throwable - throwable to convert. * @return message and stack trace converted to string. */ public static String getStackTraceString(Throwable throwable) { StringWriter sw = null; PrintWriter pw = null; try { sw = new StringWriter(); pw = new PrintWriter(sw); pw.println(throwable.toString()); throwable.printStackTrace(pw); pw.flush(); return sw.toString(); } finally { closeQuietly(pw); closeQuietly(sw); } } /** * Closes a resource and swallows exception if thrown during a close. * * @param autoCloseable resource to close */ public static void closeQuietly(AutoCloseable autoCloseable) { try { if (autoCloseable != null) { autoCloseable.close(); } } catch (Exception ignore) { } } /** * @deprecated use {@link #closeQuietly(AutoCloseable)} instead. Two problems can arise if resources are not * closed quietly in the finally block: (1) If there are multiple close() calls, and one of the first ones throws * an Exception, then the following ones will never be called. (2) If an Exception is thrown inside the * try { ... } catch block and another Exception is thrown by a close() call in the finally { ... } block, then the * second Exception will hide the first one. */ @Deprecated public static void close(Closeable c) { try { if (c != null) { c.close(); } } catch (IOException e) { // If there is an exception, the developer needs to pay attention, right? :) throw new RuntimeException(e); } } }