如果是在 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;
}
参考: