Java中printStackTrace()、toString()、getMessage()的区别
一、三者之间的关系图:

二、演示
1、printStackTrace()演示:
public class Test
{
public int div(int a, int b)
{
try
{
return a/b;
} catch (Exception e)
{
e.printStackTrace();
}
return 0;
}
public static void main(String[] args)
{
Test test = new Test();
test.div(3, 0);
}
}
打印结果:

e.printStackTrace()打印出异常,但是它还将显示出更深的调用信息。它是一层一层的向外调查,最后都会回到com.glxt…..main(主函数)。
它适合调试时使用。
2、toString()演示
public class Test
{
public int div(int a, int b)
{
try
{
return a/b;
} catch (Exception e)
{
System.out.println(e.toString());
}
return 0;
}
public static void main(String[] args)
{
Test test = new Test();
test.div(3, 0);
}
}
打印结果:

3、getMessage()演示
public class Test
{
public int div(int a, int b)
{
try
{
return a/b;
} catch (Exception e)
{
System.out.println(e.getMessage());
}
return 0;
}
public static void main(String[] args)
{
Test test = new Test();
test.div(3, 0);
}
}
打印结果:

附注:
如何获取e.printStackTrace()的内容
e.printStackTrace()通常是打印在控制台的,但是,有时候程序上线了需要看这个堆栈的内容就不容易了,一来生产环境打印的东西很多或者很少,二来有时候无法直接查看到,这个时候就需要把这些内容记录下来,比如记录到数据库中,下面的方法可以完整记录。
public static void main(String[] args) {
try {
String aa = "";
System.out.println(aa.substring(3));
} catch (Exception e) {
e.printStackTrace();
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw, true));
String str = sw.toString();
System.out.println("==========");
System.out.println(str);
}
}
打印的效果如下:
java.lang.StringIndexOutOfBoundsException: String index out of range: -3
at java.lang.String.substring(Unknown Source)
at java.lang.String.substring(Unknown Source)
at Getc.main(Getc.java:16)
==========
java.lang.StringIndexOutOfBoundsException: String index out of range: -3
at java.lang.String.substring(Unknown Source)
at java.lang.String.substring(Unknown Source)
at Getc.main(Getc.java:16)
Java中printStackTrace()、toString()、getMessage()的区别的更多相关文章
- Java中Comparable和Comparator接口区别分析
Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...
- java中List 和 Set 的区别
a. 特性 两个接口都是继承自Collection,是常用来存放数据项的集合,主要区别如下: ① List和Set之间很重要的一个区别是是否允许重复元素的存在,在List中允许插入重复的元 ...
- java中Runnable和Callable的区别
文章目录 运行机制 返回值的不同 Exception处理 java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是ja ...
- java中wait和sleep的区别
文章目录 Wait和sleep的区别 唤醒wait和sleep java中wait和sleep的区别 在本篇文章中,我们将会讨论一下java中wait()和sleep()方法的区别.并讨论一下怎么使用 ...
- Java中Set Map List 的区别
java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...
- 转:Java中abstract和interface的区别
转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java ...
- Java中this与super的区别【6】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激.请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ ...
- Java中堆和栈的区别(转)
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new. ...
- Java中的toString()方法
Java中的toString()方法 目录 Java中的toString()方法 1. 对象的toString方法 2. 基本类型的toString方法 3. 数组的toString ...
- 转:二十一、详细解析Java中抽象类和接口的区别
转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...
随机推荐
- groupinfo
http://www.wenzizone.com/2011/07/07/centos_x64_yum_da_jian_xen.html [yum xen] 配置epel就不说了,ruiy哥的文档有; ...
- sublime text高亮less
1.打开sublime,ctrl+shift+p打开命令面板,找到package control:install Package,然后选择less2css,回车. 2.继续ctrl+shift+p打开 ...
- python selenium启动浏览器打开百度搜索
python selenium打开百度搜索 #!usr/bin/python from selenium import webdriver import time browser = webdrive ...
- servlet三大作用域:request,session,application
javaweb开发中Servlet三大域对象的应用(request.session.application(ServletContext)). 1. request request是表示一个请求,只要 ...
- JAVA中List转换String,String转换List,Map转换String,String转换Map之间的转换类
<pre name="code" class="java"></pre><pre name="code" cl ...
- Java-WebSocket
A barebones WebSocket client and server implementation written in 100% Java. http://java-websocket.o ...
- linux系统磁盘分区之parted
对于linux的分区通常可以使用fdisk命令工具和parted工具 对于分区表通常有MBR分区表和GPT分区表 对于磁盘大小小于2T的磁盘,我们可以使用fdisk和parted命令工具进行分区 对于 ...
- Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
今天给大家介绍下Android中滑屏功能的一个基本实现过程以及原理初探,最后给大家重点讲解View视图中scrollTo 与 scrollBy这两个函数的区别 . 首先 ,我们必须明白在Android ...
- 引用js或css后加?v= 版本号的用法(转)
<span style="font-size:14px;">css和js带参数(形如.css?v=与.js?v= 或 .css?version=与.js?version ...
- php连接oracle数据库(linux)(转)
php连接访问Oracle是用过oci函数,以下是整理的文档 1.安装Apache和php包 yum install -y httpd php* 2.下载Oracle组件 oracle-instant ...