不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2019-01-12 11:47  分类:Java 

如果是在 try {} catch(xxx e) {} 的 catcth 分支中,很容易捕获和记录异常时的堆栈信息,直接把 Exception对象 当着参数传进去即可,参考代码如下:

// 省略了 其他代码

try {
    FileInputStream in = new FileInputStream(file);
    in.read(fileContent);
    in.close();
} catch (FileNotFoundException e) {
    logger.warn("文件不存在", e);  // 传入e,可记录异常时的 堆栈信息
    return null;
} catch (IOException e) {
    logger.warn("读取文件异常(201)", e);  // 传入e,可记录异常时的 堆栈信息
    return null;
}

 

但是,有时候需要在没有发生异常的情况下打印堆栈,,,其实也挺简单,现场新建一个 Throwable对象 即可,参考代码如下:

// 省略了 其他代码

if (StrKit.isBlank(fileName)) {
    logger.warn("文件名为空", new Throwable());
    return null;
}

 

 

参考:

运行时获取方法调用堆栈信息(java)

Java日志框架 slf4j+log4j 联合使用教程