17.异常(三)之 e.printStackTrace()介绍

摘要:
printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。e.printStackTrace(),除了标准异常外,打印atC、atB、atA.......再向外层调查。

一、关于printStackTrace()方法

public void printStackTrace()方法将此throwable对象的堆栈追踪输出至标准错误输出流,作为System.err的值。输出的第一行是此对象的toString()方法的结果,剩余行表示以前由方法 fillinStackTrace() 记录的数据。此信息的格式取决于实现,但以下示例是最常见的:

java.lang.NullPointerException
at MyClass.mash(MyClass.java:9)
at MyClass.crunch(MyClass.java:6)
at MyClass.main(MyClass.java:3)
本示例通过运行以下程序生成:
class MyClass {
public static void main(String[] args) {
crunch(null);
}
static void crunch(int[] a) {
mash(a);
}
static void mash(int[] b) {
System.out.println(b[0]);
}
}

还有就是,
catch(Exception e){
e.printStackTrace() ;
}

当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace() ;。
printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。(这是白话解释,比较容易理解)
二、关于System.out.println(e)与e.printStackTrace()

在抛出异常的情况下,有很多方法,System.out.println(e);这个方法打印出异常,并且输出在哪里出现的异常;e.printStackTrace()也是打印出异常,但是它还将显示出更深的调用信息。比如说:
A extends ---> B extends---> C
当在创建A的过程中出现问题了,我们抛出异常。<
System.out.println(e),除了标准异常外,只打印at A 然后再向外层层输出。
e.printStackTrace(),除了标准异常外,打印at C 、at B、 at A
.......再向外层调查。
在向外层调查的情况下,都一样。最后都会回到com.sun.midp.main.Main.main。
System.out.println();当发生异常时显示你自己设定的字符串信息;就比如下面的代码,try里面进行IO操作,你知道要抛出异常肯定也是IO异常,catch里面就写上特定的IOException,自己打印就行了
try{
//function
}catch(IOException exc){
System.out.println("IOException");
}
e.printStackTrace();是打印异常的堆栈信息,指明错误原因,其实当发生异常时,通常要处理异常,这是编程的好习惯,所以e.printStackTrace()可以方便你调试程序!

免责声明:文章转载自《17.异常(三)之 e.printStackTrace()介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Perfmon——为什么“% Disk Time”计数器的值会大于100%?Activity快速入门理解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Spring】利用AOP来做系统性能监控

需求: 假设已经有了一些类,现在想统计每个方法调用花了多长时间,该怎么做? 思路: 我第一个想法就是去每个方法执行前后记录一下当前的时间戳,然后相减统计到日志。 OK,没问题,那么这样做合理吗? 首先,工作量大且全部都是重复劳动; 其次,扩招性极其差; 再次,不优雅,写代码不仅要考虑到完成需求,一定要以最优雅的形式完成。 所以决定采用spring的面向切面...

C#数组段ArraySegment&amp;lt;T&amp;gt;的使用

//数组段ArraySegment<T>的使用 using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Linq; namespace ss { class Program...

Python os.system执行多条语句,os.system()的返回值以及与os.popen的区别(转)

以下内容转自  https://blog.csdn.net/fengqingting2/article/details/41940149  https://blog.csdn.net/windone0109/article/details/8895875 https://blog.csdn.net/zgl07/article/details/431968...

C#锐利体验(转)

南京邮电学院 李建忠(cornyfield@263.net) 索引 C#锐利体验 "Hello,World!"程序 C#语言基础介绍 Microsoft.NET平台基础构造 类与对象 构造器与析构器 方法 域与属性 索引器与操...

记一次内存泄漏DUMP分析

自从进入一家创业公司以后,逐渐忙成狗,却无所收获,感觉自身的技术能力用武之地很少,工作生活都在业务逻辑中颠倒。 前些天线上服务内存吃紧,让运维把DUMP拿下来,分析一下聊以自慰。 先来统计一下大对象信息 0:000> !dumpheap -min 85000 -stat Statistics: MT Count...

4、zabbix基本配置入门

Zabbix监控流程:Host group --> Hosts(向server端添加被监控主机) --> Application(在agent定义) --> Items(在applications内部定义) --> Triggers --> Events(触发器触发后产生事件) --> Actions(定义处理动作:...