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