大家都知道,下面一段代码可以直接输出异常的堆栈跟踪信息:
try
{
...
}
catch(Exception e)
{
e.printStackTrace();
}
可是,事实上在我们开发程序的过程中除非是做调试,一般均采用log4j做为错误信息输出的工具。而Exception本身并未提供将堆栈跟踪信息以字符串形式返回的函数。
/**
*
*/
package net.goldensharp;
import java.io.PrintWriter;
import java.io.StringWriter;
/**
* @author Wesley
*
*/
public class ExceptionUtil
{
/**
* 以字符串形式返回异常堆栈信息
* @param e
* @return 异常堆栈信息字符串
*/
public static String getStackTrace(Exception e)
{
StringWriter writer = new StringWriter();
e.printStackTrace(new PrintWriter(writer,true));
return writer.toString();
}
/**
* @param args
*/
public static void main(String[] args)
{
try
{
throw new Exception("自定义异常");
}
catch(Exception ex)
{
System.out.println(getStackTrace(ex));
}
}
}
文正摘自:
http://iwesley.blog.hexun.com/9965836_d.html
分享到:
相关推荐
标题"Java_用源代码片段装饰堆栈跟踪.zip"暗示了这个压缩包可能包含了一些示例或工具,用于在堆栈跟踪中添加额外的信息,比如源代码片段,以便于调试。描述没有提供具体细节,但我们可以从一般实践出发,探讨如何在...
从异常获取信息包括访问异常的类型(`e.getClass()`)、消息(`e.getMessage()`)和堆栈跟踪(`e.getStackTrace()`)。堆栈跟踪是一个数组,包含了异常发生时的代码行号和方法调用顺序,这对于调试非常有帮助。 ...
另一种常见的打印堆栈的方法是通过故意抛出一个异常,然后捕获这个异常并打印其堆栈跟踪信息。这种方式简单粗暴但非常有效,特别适用于快速定位问题时。 ```java public static void printStackTrace() { try { ...
在源码层面,`Exception`类及其子类都有构造函数来初始化异常信息,包括异常消息和堆栈跟踪。堆栈跟踪是异常发生时记录的调用堆栈,它显示了导致异常的代码路径,对于调试非常有用。 Java还提供了一些工具,如`java...
每个异常对象都包含了异常发生时的相关信息,如异常类型、错误消息以及堆栈跟踪(StackTrace),这有助于开发者定位问题的根源。 异常的层次结构中,`Exception`类下有许多子类,如`NullPointerException`、`...
`StackTraceElement`类表示堆栈跟踪中的单个元素,包含类名、方法名、行号和源文件名等信息。可以使用这些信息来定位到出错的具体代码行。 5. **打印堆栈信息** 通常,我们会将堆栈信息打印到控制台以进行调试,...
`printStackTrace`直接打印异常及其发生时的堆栈跟踪,`getStackTrace`返回堆栈跟踪的数组,而`getMessage`返回异常的描述信息。 15.10 声明新异常类型 开发者可以创建自定义异常类来表示特定的错误条件,它们通常...
当程序执行到这样的代码行时,如果不捕获这个异常,程序会立即终止,并显示一个堆栈跟踪,帮助开发者定位问题所在。 **Java中的除法运算:** 在Java中,有两种除法运算符:`/`和`%`。前者表示浮点除法(如果操作数...
在Java的堆栈跟踪中,"Caused by:"关键字后面的信息通常表示异常的根源。然而,这个信息并不总是在堆栈跟踪的第一行,因此简单的基于行数的检索可能无法准确地找到关键信息。 解析堆栈跟踪的一种方法是使用正则...
` 这种方式保留了原始异常的信息,包括堆栈跟踪,这对于调试非常有用。 2. 包装成新的异常:`throw new AnotherException("New message", e);` 这种方式创建了一个新的异常,并将原始异常作为新异常的起因(cause)...
在这个方法中,我们创建了一个`Throwable`对象,然后通过`getStackTrace()`方法获取当前线程的堆栈跟踪元素数组。`StackTraceElement`对象包含了类名、文件名、行号和方法名等信息,我们逐个打印出来,以形成堆栈...
4. `fillInStackTrace()`:这个方法用于填充堆栈跟踪信息,当异常实例化时,如果没有显式调用此方法,Java虚拟机会自动填充。 除了基本的异常处理,Java还提供了一些预定义的异常类,如 `IOException`, `...
1. **查看堆栈跟踪**:首先,需要查看详细的堆栈跟踪来定位问题的根源。堆栈跟踪会提供异常发生的精确位置以及可能的错误原因。 2. **检查服务实现**:检查服务的实现代码,确保所有方法都正确处理了可能出现的异常...
在Struts框架中,异常处理是一项至关重要的任务,它能够确保程序在遇到错误时仍能提供友好的用户反馈,而不是展示那些无意义的堆栈跟踪信息。这篇博客将深入探讨如何在Struts中优雅地处理异常。 首先,了解Struts的...
// 可能还包括堆栈跟踪信息打印 e.printStackTrace(); } } } ``` 在这个例子中,`throw new IllegalArgumentException("Invalid argument")`创建了一个新的`IllegalArgumentException`对象,并用"Invalid ...
首先,Java中的异常是由Throwable类的层次结构所定义的,其中包含了Error、Exception以及RuntimeException。Error类代表严重的错误,通常由Java运行时系统抛出,程序不应试图捕获这些错误。Exception是程序中可以...
- 当代码执行过程中出现如除数为零的`ArithmeticException`等错误时,Java会立即转至相应的catch块进行异常处理,如输出错误信息并打印堆栈跟踪。 2. **finally块的使用**: - 不论try块中的代码是否抛出异常,...
- 异常对象的printStackTrace()方法能够打印异常的堆栈跟踪信息。 - 使用异常消息(通过.getMessage()方法)可以获得有关异常原因的详细信息。 这些知识点对于理解和使用Java异常处理机制至关重要,它们帮助程序员...
IDE如IntelliJ IDEA和Eclipse提供了强大的调试工具,可以设置断点,单步执行代码,查看变量值,以及堆栈跟踪信息,帮助定位异常发生的具体位置。同时,日志记录工具如Log4j、SLF4J等,能记录异常信息,便于事后分析...
而“工具”可能指的是开发者用来诊断和修复错误的各种工具,如Java的异常堆栈跟踪、JDK自带的JConsole、VisualVM,或者是第三方的日志记录工具如Log4j、SLF4J等。 在文件列表中,"ErrorCollection.docx"很可能是一...