将异常对象转为字符串

复制代码
/**
     * 将异常对象转为字符串。
     *
     * @param ex 异常信息
     * @return 字符串
     */
    public static String exceptionToString(Throwable ex) {
        //获取指定Throwable对象中最底层的Throwable
        Throwable lowerThrowable = getLowerThrowable(ex);

        //获取异常堆栈信息。
        StringBuilder sb = new StringBuilder(81920);
        exceptionToString(ex, lowerThrowable, sb);

        return sb.toString();
    }

    /**
     * 将异常对象转为字符串。
     *
     * @param ex 异常信息
     * @return 字符串
     */
    private static void exceptionToString(Throwable ex, Throwable lowerThrowable, StringBuilder sb) {
        sb.append(ex.toString());
        sb.append(SystemCharUtils.getNewLine());

        if (ex.equals(lowerThrowable)) {
            for (StackTraceElement el : ex.getStackTrace()) {
                sb.append(el.toString());
                sb.append(SystemCharUtils.getNewLine());
            }
        }

        if (null != ex.getCause()) {
            exceptionToString(ex.getCause(), lowerThrowable, sb);
        }
    }

    /**
     * 获取指定Throwable对象中最底层的Throwable。
     *
     * @param e Throwable对象
     * @return 最底层的Throwable
     */
    public static Throwable getLowerThrowable(Throwable e) {
        if (null == e.getCause()) {
            return e;
        }

        return getLowerThrowable(e.getCause());
    }
复制代码

 

posted @   有容乃大  阅读(787)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示