Exception | 优雅的输出Exception异常信息

这两种输出方式一直在用,趁着无聊把这个发出来,顺便自己记录一下,大家视不同情况使用。

通常e.getMessage()并不能获取全部的错误信息,需要用到e.printStackTrace()查看完整错误信息,但是这个方法是void 只能在控制台输出。

注意:e.printStackTrace()要尽量少用或不用,可能会导致锁死


有两种方式推荐

1.logger方式

一个直接通过logger打印出来,这个方法是最简便的

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
logger.error("系统异常:",e);

2.通过工具类转换成字符串

直接上代码:

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

/**
 * 描述:异常工具类
 * 创建人:慌途L
 */
public class ExceptionUtil {
    
    
    private ExceptionUtil(){
    
    }

    /**
     * 获取异常信息
     */
    public static String getStackTraceInfo(Exception e) {
    
    
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        try {
    
    
            e.printStackTrace(pw);
            pw.flush();
            sw.flush();
            return sw.toString();
        } catch (Exception ex) {
    
    
            return "异常信息转换错误";
        } finally {
    
    
            try {
    
    
                pw.close();
            } catch (Exception ex) {
    
    
                ex.printStackTrace();
            }
            try {
    
    
                sw.close();
            } catch (Exception ex) {
    
    
                ex.printStackTrace();
            }
        }
    }

}

猜你喜欢

转载自blog.csdn.net/qq_25112523/article/details/121403366
今日推荐