zoukankan      html  css  js  c++  java
  • e.printStackTrace()打印在哪里以及如何e.printStackTrace()的内容打印在日志中

    1、e.printStackTrace()打印在哪里

    在catch中的e.printStackTrace()将打印到控制台

    2、e.printStackTrace()打印的内容是什么

    如下代码:

    import org.apache.logging.log4j.Logger;
    
    public class ExceptionTest {
        private static final Logger logger=LogManager.getLogger(); 
        public void  test() {
            try {
                int i=1/0;
                
            }catch(Exception e){    
                e.printStackTrace();
            }
        }
        public static void main(String[] args) {
            ExceptionTest test= new ExceptionTest();
            test.test();
            
        }
        
    }

    输出结果如下:

    java.lang.ArithmeticException: / by zero
        at myProject.ExceptionTest.test(ExceptionTest.java:10)
        at myProject.ExceptionTest.main(ExceptionTest.java:18)

    可见,e.printStackTrace()打印了错误的具体信息,即这个错误出现的位置,便于查找错误源

    3、如果将e.printStackTrace()的信息打印在日志里应该怎么做呢?

    见如下代码:

    package myProject;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    public class ExceptionTest {
        private static final Logger logger=LogManager.getLogger(); 
        public void  test() {
            try {
                int i=1/0;
                
            }catch(Exception e){    
                logger.error(e);
            }
        }
        public static void main(String[] args) {
            ExceptionTest test= new ExceptionTest();
            test.test();
            
        }
        
    }

    用logger.error(e);打印日志,输出结果如下:

    19:17:39.753 [main] ERROR myProject.ExceptionTest - java.lang.ArithmeticException: / by zero

    可见,用这种方法打印的日志,只有大概的错误信息,并没有指出报错的代码位置,不便于查找错误。用logger.error(e.getMessage());也是输出这种大概的错误信息。

    再见如下代码:

    package myProject;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    public class ExceptionTest {
        private static final Logger logger=LogManager.getLogger(); 
        public void  test() {
            try {
                int i=1/0;
                
            }catch(Exception e){    
                logger.error("ExceptionTest Exception:",e);
            }
        }
        public static void main(String[] args) {
            ExceptionTest test= new ExceptionTest();
            test.test();
            
        }
        
    }

    logger.error("ExceptionTest Exception:",e);,则输出结果如下:

    19:20:32.948 [main] ERROR myProject.ExceptionTest - ExceptionTest Exception:
    java.lang.ArithmeticException: / by zero
        at myProject.ExceptionTest.test(ExceptionTest.java:10) [classes/:?]
        at myProject.ExceptionTest.main(ExceptionTest.java:18) [classes/:?]

    这和e.printStackTrace()打印的内容大致是相同的。

  • 相关阅读:
    TinyEditor:简洁且易用的html所见即所得编辑器
    arguments.callee 调用自身
    java.io.IOException: 设备未就绪
    关于vcastr3播放器自动播放的问题
    javascript中IE浏览器不支持NEW DATE()带参数的解决方法
    Oracle常用查看表结构命令
    java通过文件头内容判断文件类型
    RS开发日期提示控件默认为昨天
    Cognos更新问题之利用Transform实现Cube增量更新
    SqlServer中从字符串中获取项目指标方法charindex月substring结合
  • 原文地址:https://www.cnblogs.com/BonnieWss/p/9264957.html
Copyright © 2011-2022 走看看