一.异常链
- 常常会再捕获一个异常后跑出另外一个异常,并且希望把异常原始信息保存下来,这被称为异常链。
- 在JDK1.4以前,程序员必须自己编写代码来保存原始异常信息,
- 现在所有Throwable的子类子构造器中都可以接受一个cause对象作为参数,这个cause就异常原由,代表着原始异常,即使在当前位置创建并抛出行的异常,也可以通过这个cause追踪到异常最初发生的位置。
- 只有Error,Exception,RunimeException提供了带cause参数的构造器,其他的所以异常就只有通过initCause()来设置cause了。
二.代码
package com.jyz.study.jdk.exception; /** * 异常链 * @author JoyoungZhang@gmail.com * */ public class ExceptionCause { public static void main(String[] args) throws Exception { test1(); } private static void test1() throws Exception{ try{ test2(); }catch(NullPointerException ex){ //1 Exception bussinessEx = new Exception("packag exception"); // bussinessEx.initCause(ex); // throw bussinessEx; //2 throw new Exception("packag exception", ex); //3 throw (Exception)ex.fillInStackTrace().initCause(ex); } } private static void test2(){ test3(); } private static void test3(){ throw new NullPointerException("str is null"); } }
- 1和2分别通过initCause()和构造器设置cause。
- 3的出发点和1 2 一样,当能否运行通过?答案是不能,参考http://zy19982004.iteye.com/admin/blogs/1974796 throwable 不能是它自己的 cause。
- 控制台信息
Exception in thread "main" java.lang.Exception: packag exception at com.jyz.study.jdk.exception.ExceptionCause.test1(ExceptionCause.java:18) at com.jyz.study.jdk.exception.ExceptionCause.main(ExceptionCause.java:11) Caused by: java.lang.NullPointerException: str is null at com.jyz.study.jdk.exception.ExceptionCause.test3(ExceptionCause.java:31) at com.jyz.study.jdk.exception.ExceptionCause.test2(ExceptionCause.java:27) at com.jyz.study.jdk.exception.ExceptionCause.test1(ExceptionCause.java:16) ... 1 more
相关推荐
这份“Java异常学习资料”包含了丰富的资源,帮助你深入理解Java异常机制,提升代码质量。 1. **异常概述** Java异常是一种在程序执行期间发生的错误或不正常情况,它可以是编译时错误,也可以是运行时错误。Java...
通过深入学习这个“java高端技术课程--Java异常处理详解”,开发者不仅可以掌握如何有效地处理程序中的异常,还能学习如何设计更稳定、更具弹性的代码。同时,了解和实践良好的异常处理策略也是成为一名优秀的Java...
Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时可能出现的错误和不正常状况。在Java中,异常是程序执行过程中出现的问题,它们中断了正常的控制流程,使得程序无法继续按照预期的...
7. **异常链**:异常链允许一个异常引用另一个异常,提供更丰富的错误信息。当一个异常在处理另一个异常时被抛出,可以使用`initCause()`方法来设置原异常作为新异常的原因。 8. **声明抛出异常**:在方法签名中...
以下是对Java异常处理的一些误区和经验总结。 **误区一:过度使用try-catch块** 有些开发者习惯于在每个函数的开始部分都套用try-catch块,以为这样可以捕捉所有可能出现的异常。实际上,这种做法使得代码变得混乱...
通过对这些文档《java web 开发问题总结》的深入学习,我们可以更好地理解和解决实际开发中遇到的Java异常问题,提升代码质量,确保应用程序的稳定运行。无论是对于初学者还是经验丰富的开发者,掌握好Java异常处理...
8. **异常链**:Java支持异常链机制,允许一个异常在被抛出时携带另一个异常的信息,这对于调试非常有用。 9. **检查异常和运行时异常**:Java区分了检查异常(如`IOException`)和运行时异常(如`...
在Java编程语言中,异常处理是一项关键特性,用于在程序执行...以上内容基于提供的标题和描述,介绍了Java异常处理的基本概念、机制和最佳实践。通过学习和理解这些知识点,开发者可以编写出更加健壮和易于维护的代码。
Java异常处理是编程过程中的重要组成部分,特别是在大型的、复杂的软件系统中,它扮演着确保程序稳定性和健壮性的关键角色。本资料包主要聚焦于Java的异常处理机制,提供了丰富的源程序示例,帮助开发者深入理解并...
3. **异常链**:Java允许创建异常链,即一个异常可以包装另一个异常,这样可以追踪问题的根源。 4. **自定义异常**:如果内置异常不能满足需求,可以通过继承`Exception`类或其子类来创建自定义异常。 5. **异常的...
- **异常链**:理解当一个异常在处理另一个异常时如何保留原始异常信息。 - **finally块**:掌握无论是否发生异常,finally块内的代码都会执行的特性,常用于资源释放。 3. **Java面试宝典**: - **内存管理**:...
Java 开发常见错误异常 在 Java 开发过程中,常见的错误异常包括 HTML 标签的常见错误、MySQL 常见错误异常、Oracle 常见错误异常...但是,这只是冰山一角,Java 开发中还有很多其他的错误异常需要我们去学习和探索。
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能优雅地处理问题,而不是突然崩溃。在Java中,异常是程序运行时出现的非正常情况,它们中断了程序的正常流程。异常处理是Java提供的一种机制,...
Java异常处理是Java编程中非常重要的一个概念,它关乎程序的稳定性和健壮性。在Java中,异常是程序运行时出现的不正常情况,...在实际项目中,结合PPT文档和实例源码学习,将有助于更好地掌握Java异常处理的实践应用。
8. **异常链**:Java支持异常链,允许一个异常捕获另一个异常,这样可以保留原始异常的信息,方便调试。 9. **assert断言**:Java还提供`assert`关键字进行条件检查,用于调试和测试,如果断言失败,将抛出一个`...
这个"java异常课件"应该是为了帮助学习者理解并熟练掌握Java中的异常处理机制而设计的。下面将详细解释Java异常处理的基本知识、核心概念以及如何在实际编程中应用。 1. **异常的概念**: 在Java中,异常是程序...
这份中文网页版的Java API文档为中国的开发者提供了便利,无需通过英文版本来学习和查找API信息,提高了开发效率。 首先,API全称为Application Programming Interface,它是软件系统中提供给开发者使用的预先定义...
3. **异常处理**:Java的异常处理机制是程序健壮性的重要组成部分,包括try-catch-finally结构、异常类层次、自定义异常和异常链。 4. **数组与集合框架**:介绍如何使用一维和多维数组,以及Java集合框架,如...
在Java编程语言中,异常处理是一项关键特性,用于在程序执行过程中捕获并处理错误情况。...通过学习和实践这些示例,你可以更好地理解和掌握Java异常处理的精髓,从而编写出更健壮、更易于维护的代码。