All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.utils.common.ThrowableUtils Maven / Gradle / Ivy

package dev.utils.common;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;

import dev.utils.JCLogUtils;

/**
 * detail: 异常处理工具类
 * @author Ttt
 */
public final class ThrowableUtils {

    private ThrowableUtils() {
    }

    // 日志 TAG
    private static final String TAG = ThrowableUtils.class.getSimpleName();

    /**
     * 获取异常信息
     * @param throwable 异常
     * @return 异常信息字符串
     */
    public static String getThrowable(final Throwable throwable) {
        return getThrowable(throwable, "error(null)");
    }

    /**
     * 获取异常信息
     * @param throwable 异常
     * @param errorInfo 获取失败返回字符串
     * @return 异常信息字符串
     */
    public static String getThrowable(
            final Throwable throwable,
            final String errorInfo
    ) {
        if (throwable != null) {
            Throwable cause = throwable.getCause();
            if (cause != null) {
                return cause.toString();
            }
            return throwable.toString();
        }
        return errorInfo;
    }

    // ============
    // = 异常栈信息 =
    // ============

    /**
     * 获取异常栈信息
     * @param throwable 异常
     * @return 异常栈信息字符串
     */
    public static String getThrowableStackTrace(final Throwable throwable) {
        return getThrowableStackTrace(throwable, "error(null)");
    }

    /**
     * 获取异常栈信息
     * @param throwable 异常
     * @param errorInfo 获取失败返回字符串
     * @return 异常栈信息字符串
     */
    public static String getThrowableStackTrace(
            final Throwable throwable,
            final String errorInfo
    ) {
        if (throwable != null) {
            PrintWriter printWriter = null;
            try {
                Writer writer = new StringWriter();
                printWriter = new PrintWriter(writer);
                throwable.printStackTrace(printWriter);
//                // 获取错误栈信息
//                StackTraceElement[] stElement = throwable.getStackTrace();
//                // 标题, 提示属于什么异常
//                printWriter.append(throwable.toString());
//                printWriter.append(DevFinal.SYMBOL.NEW_LINE);
//                // 遍历错误栈信息, 并且进行换行缩进
//                for (StackTraceElement element : stElement) {
//                    printWriter.append("\tat ");
//                    printWriter.append(element.toString());
//                    printWriter.append(DevFinal.SYMBOL.NEW_LINE);
//                }
                return writer.toString();
            } catch (Exception e) {
                JCLogUtils.eTag(TAG, e, "getThrowableStackTrace");
                return e.toString();
            } finally {
                CloseUtils.closeIOQuietly(printWriter);
            }
        }
        return errorInfo;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy