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

最新文章

  1. 数据结构与算法JavaScript (四) 串(BF)
  2. raspberry pi
  3. EasyUi 分页 和 表格数据加载
  4. Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数
  5. 黑马程序员——【Java基础】——Java语法基础
  6. Java学习第四篇:数组,排序,查找
  7. win 7 64位如何安装erdas 9.2
  8. [引]MSDN Visual Basic 和 C# 中都会用到的编程概念
  9. BZOJ 2442: [Usaco2011 Open]修剪草坪( dp )
  10. java爬虫简单实现
  11. The new powerful SQL executing schedule monthly or weekly in DB Query Analyzer 7.01
  12. Python_单元测试
  13. application.properties多环境配置文件、jar包外部配置文件、配置项加密、程序中配置使用
  14. angular的异步处理$q的使用(promise)
  15. css3径向渐变
  16. WPS之word文档处理(持续更新)
  17. WIN7成功安装Qt4.8方法,无需VS支持
  18. 69.查看APP沙盒缓存的内容文件
  19. Monad、Actor与并发编程--基于线程与基于事件的并发编程之争
  20. 使用Homebrew在Mac OS X EI Capitan上安装与配置nginx和PHP

热门文章

  1. 剑指offer-面试题23-链表中环的入口节点-双指针
  2. 4.Docker Compose 部署 Nexus
  3. idea 2018.1.2激活方法,有效期至2099年
  4. jQuery 滚动条和浏览器窗口事件
  5. 通过ssh-copy-id免密码连接Linux主机
  6. [转] c# 中使用opencv进行视频捕获
  7. 2019-08-20 纪中NOIP模拟A组
  8. 【你不知道的javaScript 上卷 笔记4】javaScript 中闭包的一些运用
  9. 微信小程序中如何上传图片
  10. eclipse 项目的创建 编写 'Hello World'