`
xinyangwjb
  • 浏览: 81825 次
  • 性别: Icon_minigender_1
  • 来自: 信阳
社区版块
存档分类
最新评论

关于异常一,熟悉的陌生人:printStackTrace

 
阅读更多
熟悉的陌生人:printStackTrace

    当程序运行的时候,如果出现运行期异常,console会打印一堆的错误信息和一堆的类名、方法名,我们根据这些错误信息知道哪个类,哪个方法,甚至哪一行代码出了错误,这些熟悉的错误信息是哪里来的呢:
    就是我们熟悉的陌生人printStackTrace()方法。
    这个方法继承自Throwable类(所有异常类的老祖宗),可以通过getStackTrace()方法来直接访问,会返回一个由栈轨迹中的元素所构成的数组(java对象是存储在堆中,但是其引用是存储在栈中,所有的引用会作为轨迹存在该数组中),其中每个元素都表示栈中的一帧。元素0是栈顶元素,是调用序列中最后一个方法调用,即这个Throwable被创建和抛出之处。数组中的组后一个元素和栈底是调用序列中最后一个方法调用。

   实例代码:
   public class WhoCalled{
       static void f(){
         try{
            throw new Exception();
         }catch(Exception e){
            for(StackTraceElement ste : e.getStackTrace()){
                System.out.println(ste.getMethodName());
             }
         }

         static void g(){f();}
         static void h(){g();}
         pulic static void main(String[]  args){
              f();
              System.out.println("-------------");
              g();
              System.out.println("-------------");
              h();
       }

     }

console输出:
      f
      main
      ---------------------
      f
      g
      main
      ---------------------
      f
      g
      h
      main
分享到:
评论
2 楼 xinyangwjb 2012-02-21  
好的,呵呵
1 楼 energykey 2012-02-21  
字体搞大点,排版稍微搞好看点。

相关推荐

    熟悉而又陌生的异常处理

    标题:“熟悉而又陌生的异常处理” 描述:“熟悉而又陌生的异常处理.异常处理异常处理” 标签:“异常处理” 部分内容:这段部分提及了异常处理的重要性和处理策略,包括异常的分类、异常构造函数、异常声明、...

    java异常处理

    - 异常处理链(Exception Chaining):一个异常可以导致另一个异常的抛出,形成一个异常链。 2. 异常分类: - 检查性异常(Checked Exceptions):这些异常在编译时就需要被处理,例如`IOException`。如果未被...

    Java语言程序设计:第五章 异常.ppt

    异常是Java语言程序设计中不可或缺的一部分,它们在程序执行过程中可能会出现的错误或异常情况。下面是Java语言程序设计之异常处理的要点: 一、为什么需要异常? 在Java程序执行过程中,可能会出现各种错误,如...

    2024年java面试题-java异常方面的面试题

    ### 2024年Java面试题:Java异常方面的面试题 #### 核心知识点解析 **一、Java异常架构** ...通过以上内容的深入理解,你可以更好地准备Java面试中关于异常处理的部分,并在实际开发工作中有效地运用这些知识。

    实验五 Java异常处理实验.docx

    本实验的目的是让学生熟悉 Java 异常处理的概念,掌握异常捕获和处理的方法,并能自定义异常。 实验内容 ### 一、了解什么是异常,异常的概念,如何产生异常 在 Java 中,异常是指程序执行过程中出现的非正常情况...

    Java语言程序设计:JAVA_7-异常.ppt

    - 异常对象可以通过调用`getMessage()`获取异常信息,`printStackTrace()`打印异常堆栈跟踪,`toString()`返回异常的字符串表示。 6. **自定义异常**: - 开发者可以根据需要创建新的异常类,继承自`Exception`或...

    java 异常相关

    在Java编程语言中,异常处理是一项关键特性,用于在程序执行过程中捕获并处理错误或不正常的情况。异常是程序运行时出现的问题,比如除零错误、文件未找到或者空指针引用等。本篇文章将深入探讨Java中的异常处理机制...

    java 异常案例

    本文将通过一个具体的Java异常案例来深入探讨Java中的异常处理机制。 #### 一、Java异常体系结构 Java中的异常处理基于一个名为`Throwable`的类。所有异常类都直接或间接继承自`Throwable`。根据异常的不同类型和...

    java异常类:java异常

    每个异常类都具有`getMessage()`方法,返回关于异常的详细信息,以及`printStackTrace()`方法,用于打印异常发生时的堆栈跟踪信息,这对于调试非常有用。 在实际开发中,我们应遵循一些最佳实践: - 不要忽视异常,...

    Java异常分装实例

    在Java编程语言中,异常处理是一项关键特性,用于管理和恢复程序执行中的错误情况。异常(Exception)是程序运行时出现的非正常状态,通常会导致程序中断。为了保证代码的健壮性和可维护性,Java提供了异常分装机制...

    一篇不错的讲解Java异常的文章

    从给定的文件信息中,我们可以提炼出关于Java异常处理的关键知识点,这将帮助我们深入理解Java中的异常机制以及如何有效地处理它们。 ### Java异常处理的重要性 Java异常处理是编程中一个至关重要的部分,它允许...

    Java自定义异常类_1.txt

    2. **异常传播**:如果一个方法内部抛出了异常但没有处理,可以通过在方法签名中声明抛出该异常的方式将其传递给调用者。 3. **异常信息记录**:通过打印异常栈跟踪信息或使用日志记录框架记录异常信息,有助于后续...

    异常+开源日志

    - `void printStackTrace()`:打印异常的堆栈跟踪信息。 - `String getMessage()`:获取异常的信息描述。 - **常见异常类型**: - 运行时异常(`RuntimeException`):无需显式处理的异常,如空指针异常(`...

    java异常处理ppt

    2. **异常的产生**:异常可以通过两种方式产生:一是由Java运行时系统(JRE)自动创建,例如当访问空指针时会抛出`NullPointerException`;二是程序员通过`throw`关键字显式抛出异常。 3. **异常类的层次结构**:...

    java throws声明异常实例一

    在Java编程语言中,异常处理是一项关键特性,用于处理程序运行时可能出现的错误或异常情况。`throws`关键字是Java中处理异常的关键部分,它允许我们在方法签名中声明一个或多个可能抛出的异常。本实例将深入探讨如何...

    exception 异常处理 exception

    3. **异常传递**:如果某个方法不想直接处理异常,可以在方法签名中声明抛出的异常类型,通过 `throws` 关键字将异常向上一层方法传递。 4. **finally 块**:无论是否发生异常,`finally` 块中的代码都会被执行,常...

    java异常机制研究

    3. **异常链**:当一个异常被捕获后,可以通过 `throw` 再次抛出一个新的异常,同时将原先捕获到的异常作为新异常的cause,形成异常链。这种做法有利于保留原始异常信息,便于调试。 4. **异常日志记录**:通常在...

    异常处理的几个例子

    本篇将通过几个具体的例子深入探讨Java中的异常处理,旨在帮助你理解和掌握这一核心概念。 首先,我们了解Java中的异常是什么。异常是在程序执行过程中发生的问题,可能是由于非法操作、资源不足或其他错误条件引起...

    深入理解java异常(异常中的Error+异常中的Exception+检查异常+运行时异常+异常处理+throws关键字等)

    在 Java 中,Exception 类提供了一组方法用来获取异常的一些信息,例如 printStackTrace() 方法,可以打印出异常的跟踪栈信息。 下面是 Java 异常机制的继承层次结构图: * Throwable + Error + Exception - ...

    java异常处理试题及答案.doc

    * 可以在 catch 块中使用 printStackTrace() 方法来打印异常的栈跟踪信息。 七、Java 异常处理的 best practice * 应该尽量避免使用异常控制,以提高程序的执行效率。 * 应该在可能抛出异常的代码块中使用 try-...

Global site tag (gtag.js) - Google Analytics