Java Throwable to String getStackTraceString(Throwable throwable)

Here you can find the source of getStackTraceString(Throwable throwable)

Description

Converts stack trace to string.

License

Apache License

Parameter

Parameter Description
throwable - throwable to convert.

Return

message and stack trace converted to string.

Declaration

public static String getStackTraceString(Throwable throwable) 

Method Source Code


//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);
        }
    }
}

Related

  1. getStackTraceString(final Throwable currentEx)
  2. getStackTraceString(Throwable cause, String delimiter, int maxLines)
  3. getStackTraceString(Throwable e)
  4. getStackTraceString(Throwable t)
  5. getStackTraceString(Throwable throwable)
  6. getStackTraceString(Throwable tr)
  7. getStackTraceWithoutCause(Throwable throwable)
  8. printStackTrace(Throwable t)
  9. serialize(Throwable t)