`
m635674608
  • 浏览: 5026681 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java 打印堆栈的几种方法

    博客分类:
  • java
 
阅读更多

java 中可以通过 eclipse 等工具直接打印堆栈,但是对于某些环境中无法使用 eclipse 工具时,需要知道堆栈,如何处理呢?

介绍3种方法供选择:

方法一:

复制代码
package name.xu;
public class CallStack {
    public static void printCallStatck() {
        Throwable ex = new Throwable();
        StackTraceElement[] stackElements = ex.getStackTrace();
        if (stackElements != null) {
            for (int i = 0; i < stackElements.length; i++) {
                System.out.print(stackElements[i].getClassName()+"/t");
                System.out.print(stackElements[i].getFileName()+"/t");
                System.out.print(stackElements[i].getLineNumber()+"/t");
                System.out.println(stackElements[i].getMethodName());
                System.out.println("-----------------------------------");
            }
        }
    }
    
}
复制代码

 

方法二:

Exception e = new Exception("this is a log");
e.printStackTrace();

 

方法三:

String fullStackTrace = org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(e)

 

方法四:

Thread.currentThread().getStackTrace()

 

个人推荐,方法一,原因:简单易用,速度快

 

参考资料:

1、http://blog.csdn.net/chief1985/article/details/4618492

2、http://www.cnblogs.com/flyme/archive/2012/04/10/2440029.html

3、http://stackoverflow.com/questions/1069066/get-current-stack-trace-in-java 【推荐仔细看看

分享到:
评论

相关推荐

    打印JAVA堆栈的方法

    通常情况下,前几个栈帧可能包含的是打印堆栈方法本身及调用它的方法的信息,对问题定位帮助不大,因此在实际应用中可以根据具体需求调整这一数值。 ### 方法二:使用异常抛出 另一种常见的打印堆栈的方法是通过...

    详解Java 打印堆栈的几种方法

    这篇文章将详细介绍四种在Java中打印堆栈的方法。 ### 方法一:使用`Throwable`类 ```java public class CallStack { public static void printCallStatck() { Throwable ex = new Throwable(); ...

    《java程序调试》的一些方法

    以上介绍了几种常见的Java程序调试方法,包括利用编译器审查、跟踪执行流程、断点调试、隔离调试以及错误重现等。这些方法各有特点,适用于不同类型的错误。实际开发过程中,开发者需要根据具体情况灵活选择合适的...

    java自定义异常打印内容详解

    为了解决自定义异常打印内容的问题,我们可以采取以下几种方法: 1. 编写自定义异常 我们可以编写一个自定义异常类,例如AppException,并在其中重写fillInStackTrace方法,以便只打印第一条信息。这样不仅可以...

    java 查看JVM中所有的线程的活动状况

    线程状态主要有以下几种: 1. 新建(NEW):线程被创建但尚未启动。 2. 可运行(RUNNABLE):线程正在Java虚拟机中执行。 3. 阻塞(BLOCKED):线程在等待监视器锁。 4. 等待(WAITING):线程在无限期等待另一个...

    Java性能调优命令

    它能打印出Java线程的堆栈跟踪,帮助开发者发现哪些线程被阻塞、等待或者处于运行状态。例如,`jstack pid`命令用于查看进程id为pid的Java线程的堆栈信息。 4. jmap命令用于观察运行中的JVM物理内存的占用情况。它...

    java http 发送xml报文

    1. **错误处理**:代码中的异常处理仅通过`ex.printStackTrace()`打印堆栈跟踪,这在调试阶段可能有用,但在生产环境中应捕获具体异常并采取适当措施,如记录日志或返回错误信息。 2. **资源管理**:虽然代码中关闭...

    Java连接数据库的方法

    - 如果在连接过程中发生任何异常,可以通过`catch`块捕获并处理这些异常,通常会打印异常堆栈信息以便于调试。 #### 二、Java连接MySQL数据库 连接MySQL数据库同样也是通过JDBC的方式实现。以下是一个具体的示例...

    java异常处理例题代码.pdf

    - 异常对象的printStackTrace()方法能够打印异常的堆栈跟踪信息。 - 使用异常消息(通过.getMessage()方法)可以获得有关异常原因的详细信息。 这些知识点对于理解和使用Java异常处理机制至关重要,它们帮助程序员...

    java学习最新英文单词

    - **定义**:打印异常堆栈跟踪的方法。 - **作用**:帮助调试程序。 ### 46. Primitive Data Types - **定义**:基本数据类型,包括 `byte`、`char`、`boolean`、`short`、`int`、`long`、`float` 和 `double`。 - ...

    Java源码查看线程的运行状态.rar

    线程在Java中由`java.lang.Thread`类表示,其生命周期包括以下几种状态: 1. **新建**(New):当使用`new Thread()`创建了一个线程对象时,线程处于新建状态。 2. **可运行**(Runnable):调用`start()`方法后,...

    数据结构(JAVA版)教学课件

    在本套JAVA版的数据结构教学课件中,我们将深入学习几种关键的数据结构及其在JAVA编程中的实现。以下是对各章节内容的详细解读: 第一章:这部分通常会介绍数据结构的基本概念,包括什么是数据结构,它的重要性以及...

    java文件输出流写文件的几种方法

    当可能出现`IOException`时,通常会捕获并打印堆栈跟踪。在实际应用中,可能需要根据具体需求进行更复杂的错误处理,如记录日志或通知用户。 4. **文件操作权限** 要注意的是,写文件操作可能会因文件权限问题而...

    java swing Mac风格的LookAndFeel

    Java Swing内置了几种预定义的LookAndFeel,包括Metal(默认的Java LookAndFeel)、Windows以及Motif。然而,对于在Mac操作系统上运行的Java应用,开发者通常希望应用能够具有与原生Mac应用相同的外观和感觉,这就是...

    2014年Java最全面试题以及答案.

    7. 排序都有哪几种方法?请列举。用JAVA实现一个快速排序? 常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。快速排序是通过选择一个“基准”元素,然后将数组分为两个子数组,一个...

    java写一个日志程序

    在这个示例中,我们用到了以下几种流: - `BufferedReader`:用于从标准输入(键盘)读取文本数据。它通过缓存字符以提高效率,可以一次读取一行数据。 - `InputStreamReader`:是字符流与字节流之间的桥梁,它...

    java编程出现中文乱码解决方法一

    这种方法适用于以下几种情况: - 当前端发送的数据是以ISO-8859-1编码时,而后端期望使用UTF-8编码处理数据。 - 在读取文件或数据库中的数据时,如果文件或数据库中的数据采用的是ISO-8859-1编码,但应用期望以UTF-8...

    java java查bug 查bug bug 查错 源码

    捕获并打印堆栈轨迹可以帮助我们了解异常发生的具体位置和原因。 5. **单元测试**:JUnit和其他测试框架如TestNG可以编写自动化测试用例,确保代码在修改后仍然正确。测试驱动开发(TDD)更是将编写测试作为编写功能...

    JAVA中3des加密算法

    5. **错误处理**:在这些方法中,通常会有异常处理代码,捕获可能抛出的`Exception`,并打印堆栈跟踪信息以帮助调试。 6. **内存管理**:在方法的最后,使用`finally`块将不再需要的对象设置为`null`,这是Java中的...

    Java企业级开发综合技能知识总结

    8. **排序都有哪几种方法?请列举。用JAVA实现一个快速排序?** - 常见排序算法:冒泡排序、插入排序、选择排序、快速排序、归并排序等。 - 快速排序示例: ```java public class QuickSort { public static ...

Global site tag (gtag.js) - Google Analytics