高效开发之:try catch的异常堆栈信息转字符串处理

在开发场景中,有时会要求异常信息需要记录在案,也就是需要将java Exception异常栈信息进行入库处理。这也就代表不能像以前一样,将catch (Exception e)的异常进行直接e.printStackTrace();

catch (Exception e){
    e.printStackTrace();
}

需要将异常通过 printStackTrace 的构造方转换成字符串,然后再进行入库或者是相关的处理。方法如下:

public static String getExceptionString(Exception e) throws IOException {
      //读取异常堆栈信息
      ByteArrayOutputStream arrayOutputStream=new ByteArrayOutputStream();
      e.printStackTrace(new PrintStream(arrayOutputStream));
      //通过字节数组转换输入输出流
      BufferedReader fr=new BufferedReader(new InputStreamReader(new ByteArrayInputStream(arrayOutputStream.toByteArray())));
      String str;
      StringBuilder exceptionStr=new StringBuilder();
      while ((str=fr.readLine())!=null){
          exceptionStr.append(str);
      }
      //一定一定要关闭流
      fr.close();
      return exceptionStr.toString();
  }

然后再catch中进行使用即可:

catch (Exception e) {
     String exceptionStr = getExceptionString(e);
     System.out.println(exceptionStr);//此处可以进行入库处理等..
 }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值