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()打印的内容大致是相同的。

原文地址:https://www.cnblogs.com/BonnieWss/p/9264957.html

时间: 2024-10-06 20:39:24

e.printStackTrace()打印在哪里以及如何e.printStackTrace()的内容打印在日志中的相关文章

多个线程实现顺序打印数据,(可自定义线程一次打印数量和总数量)

最近看到一道面试题:让3个线程顺序打印数字,如线程1打印1-5,线程2打印6-10,线程3打印11-15,然后是线程1打印16-20...一直打印到75结束. 这到题主要问题有两点: 第一点是不能让线程打印的过程中出现其他线程 第二点是要实现线程进入的过程是有序的,如上123123..这样. 我先是把基本的功能实现了,后来发现可以改造一下,做成可扩展的,即每次打印的数量可自定义,总的数量可自定义,并且保证线程的顺序是有序的,下面是具体代码: PrintQueue.java 文件,同步线程,控制打

java,编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz.

需求:编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz. package study01; public class For { public static void main(String[] args) { for(int i = 1;i<=150;i++){ System.out.print(i); if(i%3==0){ System.out.print(" foo"); } if(i

根据输入的内容打印出菱形

/* 5 根据输入的内容打印出菱形 */ +(void)print:(NSInteger)count blankString:(NSString*)blankString flagString:(NSString*)flagString /* { NSMutableString * ptr = [[NSMutableString alloc]init]; for (NSInteger i = 0; i < count; i++) { for (NSInteger j = 0; j < coun

依据输入的内容打印出菱形

/* 5 依据输入的内容打印出菱形 */ +(void)print:(NSInteger)count blankString:(NSString*)blankString flagString:(NSString*)flagString /* { NSMutableString * ptr = [[NSMutableString alloc]init]; for (NSInteger i = 0; i < count; i++) { for (NSInteger j = 0; j < coun

在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码。

在使用NSArray打印的时候如果遇到中文字符那么会打印出来编码,如下代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSArray *array = @[@"张三",@"lisi",@"123"]; NSLog(@"%@",array)

WPF win7+vs2010开发的打印功能,怎么在XP系统上无法打印

在wpf 中打印功能很强大,但最近是在win7上可以但是布置到xp上就不可以了,查了好多资料终于知道怎么回事了原来xp里没有.net framework3.5 安装一个就OK了要先安装4.0. WPF win7+vs2010开发的打印功能,怎么在XP系统上无法打印

打印任务栏出现“正在删除-已暂停-正在打印“的解决

标题:打印任务栏出现"正在删除-已暂停-正在打印"的解决如图: 当出现这样的问题的时候,你发现你根本无法打印的,我尝试过的方法有:1.ping打印机,发现可以ping通,问题没有解决2.查看打印状态,"暂停"的√有没有勾选上,问题没有解决3.使用脱机打印,问题没有解决4.关闭打印机,然后再重启,问题没有解决5.关闭打印机,在有问题的这台电脑上面把打印服务关闭掉,然后稍微等一会儿开启打印服务,再开机,发现其它人不影响打印,问题的关键还是这台电脑上面 解决问题的办法有:

1.关于QT中的Graphics绘图,定时器,动画,将窗口中的内容打印到图片上,打印机,打印预览

 1 新建项目 A  修改pro中的内容如下: HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets printsupport B  编写MyWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H   #include <QWidget> #include <QGraphicsScene> #include <QGraphicsLineItem>

文件和打印的技巧-单独打开一个页面来完成打印功能

—————————————————————————— <script type="text/javascript">                    function doPrint(){                window.open('print.html');            }        </script> ———————————————————————— <body style="text-align:center