在java 基础课上学到异常的时候,课本上的try……catch语句里的e.printStackTrace()完全不懂,上网搜了一下资料和查阅API,把自己对这个的一点了解写出来。
当我们写的语句可能触发异常时,eclipse就会提示我们用捕获异常语句try……catch包围它,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象,e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace()。当然,我们也可以用System语句输出,那么这两个语句有什么区别呢?
1、两个输出语句都能输出,System语句可以提示你异常发生的位置;但e.printStackTrace()可以显示更深的调用关系。例如:程序中有继承的关系, Rose extends Flower ; Flower extends Plant;假如我们在创建 Rose 的时候发生异常,那么System语句就会输出异常 at Rose ,然后向外层输出
但e.printStackTrace()输出除了标准异常外,打印
at Plant
at Flowerat Rose
.......再向外层调查。
在向外层调查的情况下,都一样2、System.out.println();当发生异常时显示你自己设定的字符串信息;e.printStackTrace();是打印异常的堆栈信息,指明错误原因。
note:其实当发生异常时,通常要处理异常,这是编程的好习惯,所以e.printStackTrace()可以方便你调试程序!
相关文章
- Java中的 Stream 流03
- Java 缺失的特性:扩展方法
- Java 定时线程池各个方法的区别 Java周期执行线程池各个方法的区别 ScheduledExecutorService schedulerService
- js中的4种函数调用模式:函数调用、方法调用、构造器调用、间接调用
- Illustrator CS中字体丢失或缺失问题的解决方法
- 【Java学习笔记】<集合框架>定义功能去除ArrayList中的重复元素
- Java 中的包装类
- Object类中equals,hashCode和toString方法的学习
- Java中Object类的equals()和hashCode()方法深入解析
- JAVA中Object类 equals()方法和“==”怎样区别