开发者社区> 问答> 正文

为什么捕获异常后不要使用e.printStackTrace()打印日志?

为什么捕获异常后不要使用e.printStackTrace()打印日志?

展开
收起
夹心789 2024-06-27 12:01:42 372 0
1 条回答
写回答
取消 提交回答
  • "反例:

    public void doSth(){    
    try{        
    // 业务逻辑        
    ...    
    } catch (Exception e){        
    e.printStackTrace();    
    }
    }
    

    分析:
    1.e.printStackTrace()打印出的堆栈日志跟业务代码日志是交错混合在一起的,通常排查异常日志不太方便。
    2.e.printStackTrace()语句产生的字符串记录的是堆栈信息,如果信息太长太多,字符串常量池所在的内存块没有空间了,即内存满了,系统请求将被阻塞。
    正例:

    public void doSth(){    
    try{        
    // 业务逻辑        
    ...    
    } catch (Exception e){        
    log.error(""execute failed"", e);    
    }
    }"
    
    2024-06-27 13:20:53
    赞同 2 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载