熟悉的陌生人: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
分享到:
相关推荐
标题:“熟悉而又陌生的异常处理” 描述:“熟悉而又陌生的异常处理.异常处理异常处理” 标签:“异常处理” 部分内容:这段部分提及了异常处理的重要性和处理策略,包括异常的分类、异常构造函数、异常声明、...
- 异常处理链(Exception Chaining):一个异常可以导致另一个异常的抛出,形成一个异常链。 2. 异常分类: - 检查性异常(Checked Exceptions):这些异常在编译时就需要被处理,例如`IOException`。如果未被...
异常是Java语言程序设计中不可或缺的一部分,它们在程序执行过程中可能会出现的错误或异常情况。下面是Java语言程序设计之异常处理的要点: 一、为什么需要异常? 在Java程序执行过程中,可能会出现各种错误,如...
### 2024年Java面试题:Java异常方面的面试题 #### 核心知识点解析 **一、Java异常架构** ...通过以上内容的深入理解,你可以更好地准备Java面试中关于异常处理的部分,并在实际开发工作中有效地运用这些知识。
本实验的目的是让学生熟悉 Java 异常处理的概念,掌握异常捕获和处理的方法,并能自定义异常。 实验内容 ### 一、了解什么是异常,异常的概念,如何产生异常 在 Java 中,异常是指程序执行过程中出现的非正常情况...
- 异常对象可以通过调用`getMessage()`获取异常信息,`printStackTrace()`打印异常堆栈跟踪,`toString()`返回异常的字符串表示。 6. **自定义异常**: - 开发者可以根据需要创建新的异常类,继承自`Exception`或...
在Java编程语言中,异常处理是一项关键特性,用于在程序执行过程中捕获并处理错误或不正常的情况。异常是程序运行时出现的问题,比如除零错误、文件未找到或者空指针引用等。本篇文章将深入探讨Java中的异常处理机制...
本文将通过一个具体的Java异常案例来深入探讨Java中的异常处理机制。 #### 一、Java异常体系结构 Java中的异常处理基于一个名为`Throwable`的类。所有异常类都直接或间接继承自`Throwable`。根据异常的不同类型和...
每个异常类都具有`getMessage()`方法,返回关于异常的详细信息,以及`printStackTrace()`方法,用于打印异常发生时的堆栈跟踪信息,这对于调试非常有用。 在实际开发中,我们应遵循一些最佳实践: - 不要忽视异常,...
在Java编程语言中,异常处理是一项关键特性,用于管理和恢复程序执行中的错误情况。异常(Exception)是程序运行时出现的非正常状态,通常会导致程序中断。为了保证代码的健壮性和可维护性,Java提供了异常分装机制...
从给定的文件信息中,我们可以提炼出关于Java异常处理的关键知识点,这将帮助我们深入理解Java中的异常机制以及如何有效地处理它们。 ### Java异常处理的重要性 Java异常处理是编程中一个至关重要的部分,它允许...
2. **异常传播**:如果一个方法内部抛出了异常但没有处理,可以通过在方法签名中声明抛出该异常的方式将其传递给调用者。 3. **异常信息记录**:通过打印异常栈跟踪信息或使用日志记录框架记录异常信息,有助于后续...
- `void printStackTrace()`:打印异常的堆栈跟踪信息。 - `String getMessage()`:获取异常的信息描述。 - **常见异常类型**: - 运行时异常(`RuntimeException`):无需显式处理的异常,如空指针异常(`...
2. **异常的产生**:异常可以通过两种方式产生:一是由Java运行时系统(JRE)自动创建,例如当访问空指针时会抛出`NullPointerException`;二是程序员通过`throw`关键字显式抛出异常。 3. **异常类的层次结构**:...
在Java编程语言中,异常处理是一项关键特性,用于处理程序运行时可能出现的错误或异常情况。`throws`关键字是Java中处理异常的关键部分,它允许我们在方法签名中声明一个或多个可能抛出的异常。本实例将深入探讨如何...
3. **异常传递**:如果某个方法不想直接处理异常,可以在方法签名中声明抛出的异常类型,通过 `throws` 关键字将异常向上一层方法传递。 4. **finally 块**:无论是否发生异常,`finally` 块中的代码都会被执行,常...
3. **异常链**:当一个异常被捕获后,可以通过 `throw` 再次抛出一个新的异常,同时将原先捕获到的异常作为新异常的cause,形成异常链。这种做法有利于保留原始异常信息,便于调试。 4. **异常日志记录**:通常在...
本篇将通过几个具体的例子深入探讨Java中的异常处理,旨在帮助你理解和掌握这一核心概念。 首先,我们了解Java中的异常是什么。异常是在程序执行过程中发生的问题,可能是由于非法操作、资源不足或其他错误条件引起...
在 Java 中,Exception 类提供了一组方法用来获取异常的一些信息,例如 printStackTrace() 方法,可以打印出异常的跟踪栈信息。 下面是 Java 异常机制的继承层次结构图: * Throwable + Error + Exception - ...
* 可以在 catch 块中使用 printStackTrace() 方法来打印异常的栈跟踪信息。 七、Java 异常处理的 best practice * 应该尽量避免使用异常控制,以提高程序的执行效率。 * 应该在可能抛出异常的代码块中使用 try-...