`
zy19982004
  • 浏览: 661806 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:251950
社区版块
存档分类
最新评论

Java异常学习三:异常链

 
阅读更多

一.异常链

  1. 常常会再捕获一个异常后跑出另外一个异常,并且希望把异常原始信息保存下来,这被称为异常链。
  2. 在JDK1.4以前,程序员必须自己编写代码来保存原始异常信息,
  3. 现在所有Throwable的子类子构造器中都可以接受一个cause对象作为参数,这个cause就异常原由,代表着原始异常,即使在当前位置创建并抛出行的异常,也可以通过这个cause追踪到异常最初发生的位置。
  4. 只有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. 1和2分别通过initCause()和构造器设置cause。
  2. 3的出发点和1 2 一样,当能否运行通过?答案是不能,参考http://zy19982004.iteye.com/admin/blogs/1974796 throwable 不能是它自己的 cause。
  3. 控制台信息
    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
     

 

1
0
分享到:
评论

相关推荐

    Java异常学习资料

    这份“Java异常学习资料”包含了丰富的资源,帮助你深入理解Java异常机制,提升代码质量。 1. **异常概述** Java异常是一种在程序执行期间发生的错误或不正常情况,它可以是编译时错误,也可以是运行时错误。Java...

    java高端技术课程--Java异常处理详解

    通过深入学习这个“java高端技术课程--Java异常处理详解”,开发者不仅可以掌握如何有效地处理程序中的异常,还能学习如何设计更稳定、更具弹性的代码。同时,了解和实践良好的异常处理策略也是成为一名优秀的Java...

    Java异常处理,非常适合Java爱好者

    Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时可能出现的错误和不正常状况。在Java中,异常是程序执行过程中出现的问题,它们中断了正常的控制流程,使得程序无法继续按照预期的...

    Java-Java异常处理教程

    7. **异常链**:异常链允许一个异常引用另一个异常,提供更丰富的错误信息。当一个异常在处理另一个异常时被抛出,可以使用`initCause()`方法来设置原异常作为新异常的原因。 8. **声明抛出异常**:在方法签名中...

    Java 异常处理的误区和经验总结

    以下是对Java异常处理的一些误区和经验总结。 **误区一:过度使用try-catch块** 有些开发者习惯于在每个函数的开始部分都套用try-catch块,以为这样可以捕捉所有可能出现的异常。实际上,这种做法使得代码变得混乱...

    java 异常 问题收集 Exception

    通过对这些文档《java web 开发问题总结》的深入学习,我们可以更好地理解和解决实际开发中遇到的Java异常问题,提升代码质量,确保应用程序的稳定运行。无论是对于初学者还是经验丰富的开发者,掌握好Java异常处理...

    java 异常处理练习

    8. **异常链**:Java支持异常链机制,允许一个异常在被抛出时携带另一个异常的信息,这对于调试非常有用。 9. **检查异常和运行时异常**:Java区分了检查异常(如`IOException`)和运行时异常(如`...

    java 异常相关

    在Java编程语言中,异常处理是一项关键特性,用于在程序执行...以上内容基于提供的标题和描述,介绍了Java异常处理的基本概念、机制和最佳实践。通过学习和理解这些知识点,开发者可以编写出更加健壮和易于维护的代码。

    Java异常处理源程序、各种源程序

    Java异常处理是编程过程中的重要组成部分,特别是在大型的、复杂的软件系统中,它扮演着确保程序稳定性和健壮性的关键角色。本资料包主要聚焦于Java的异常处理机制,提供了丰富的源程序示例,帮助开发者深入理解并...

    解决各种java 异常的方法

    3. **异常链**:Java允许创建异常链,即一个异常可以包装另一个异常,这样可以追踪问题的根源。 4. **自定义异常**:如果内置异常不能满足需求,可以通过继承`Exception`类或其子类来创建自定义异常。 5. **异常的...

    Java面试题、Java基础面试题、Java异常面试题,Java面试宝典

    - **异常链**:理解当一个异常在处理另一个异常时如何保留原始异常信息。 - **finally块**:掌握无论是否发生异常,finally块内的代码都会执行的特性,常用于资源释放。 3. **Java面试宝典**: - **内存管理**:...

    java开发常见错误异常

    Java 开发常见错误异常 在 Java 开发过程中,常见的错误异常包括 HTML 标签的常见错误、MySQL 常见错误异常、Oracle 常见错误异常...但是,这只是冰山一角,Java 开发中还有很多其他的错误异常需要我们去学习和探索。

    Java学习资料-异常处理

    Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能优雅地处理问题,而不是突然崩溃。在Java中,异常是程序运行时出现的非正常情况,它们中断了程序的正常流程。异常处理是Java提供的一种机制,...

    java异常详细介绍

    Java异常处理是Java编程中非常重要的一个概念,它关乎程序的稳定性和健壮性。在Java中,异常是程序运行时出现的不正常情况,...在实际项目中,结合PPT文档和实例源码学习,将有助于更好地掌握Java异常处理的实践应用。

    Java第10章 异常处理含源代码

    8. **异常链**:Java支持异常链,允许一个异常捕获另一个异常,这样可以保留原始异常的信息,方便调试。 9. **assert断言**:Java还提供`assert`关键字进行条件检查,用于调试和测试,如果断言失败,将抛出一个`...

    java异常课件

    这个"java异常课件"应该是为了帮助学习者理解并熟练掌握Java中的异常处理机制而设计的。下面将详细解释Java异常处理的基本知识、核心概念以及如何在实际编程中应用。 1. **异常的概念**: 在Java中,异常是程序...

    Java API文档 中文网页版

    这份中文网页版的Java API文档为中国的开发者提供了便利,无需通过英文版本来学习和查找API信息,提高了开发效率。 首先,API全称为Application Programming Interface,它是软件系统中提供给开发者使用的预先定义...

    Java2学习指南.rar

    3. **异常处理**:Java的异常处理机制是程序健壮性的重要组成部分,包括try-catch-finally结构、异常类层次、自定义异常和异常链。 4. **数组与集合框架**:介绍如何使用一维和多维数组,以及Java集合框架,如...

    Java 实例 - 链试异常处理源代码-详细教程.zip

    在Java编程语言中,异常处理是一项关键特性,用于在程序执行过程中捕获并处理错误情况。...通过学习和实践这些示例,你可以更好地理解和掌握Java异常处理的精髓,从而编写出更健壮、更易于维护的代码。

Global site tag (gtag.js) - Google Analytics