001/*
002 * Copyright 2001-2006 Geert Bevin <gbevin[remove] at uwyn dot com>
003 * Distributed under the terms of either:
004 * - the common development and distribution license (CDDL), v1.0; or
005 * - the GNU Lesser General Public License, v2.1 or later
006 * $Id: ExceptionUtils.java 3106 2006-03-13 17:53:50Z gbevin $
007 */
008package com.uwyn.jhighlight.tools;
009
010import java.io.PrintWriter;
011import java.io.StringWriter;
012
013/**
014 * Collection of utility methods to work with exceptions.
015 * 
016 * @author Geert Bevin (gbevin[remove] at uwyn dot com)
017 * @version $Revision: 3106 $
018 * @since 1.0
019 */
020public abstract class ExceptionUtils
021{
022        private ExceptionUtils()
023        {
024        }
025        
026        /**
027         * Obtains the entire stracktrace of an exception and converts it into a
028         * string.
029         * 
030         * @param exception the exception whose stacktrace has to be converted
031         * @return the stracktrace, converted into a string
032         * @since 1.0
033         */
034        public static String getExceptionStackTrace(Throwable exception)
035        {
036                if (null == exception)  throw new IllegalArgumentException("exception can't be null;");
037                
038                String stack_trace = null;
039                
040                StringWriter string_writer = new StringWriter();
041                PrintWriter print_writer = new PrintWriter(string_writer);
042                
043                exception.printStackTrace(print_writer);
044                
045                stack_trace = string_writer.getBuffer().toString();
046                
047                print_writer.close();
048                
049                try
050                {
051                        string_writer.close();
052                }
053                // JDK 1.2.2 compatibility
054                catch (Throwable e2)
055                {
056                }
057                
058                return stack_trace;
059        }
060}
061