第十二章 异常处理 概念和基本使用

转载 2016年08月29日 22:10:32

1.为什么要有异常处理

  • Java的基本理念是结构不佳的代码不能运行。
  • why:发现错误的理想时机是在编译阶段,余下的问题在运行期间解决,这就需要错误源能通过某种方式,把适当的信息传递给某个接受者【异常处理机制指导如何传递】——该接受者将指导如何正确处理这个问题(catch块)。

2.异常处理机制是什么,作用

  • Java使用异常来提供一致的错误报告模型,使得构件(报告模型)能够与客户端代码可靠地沟通问题,以达到创建健壮系统的目的。、
  • java异常处理的目的在于通过使用少于目前数量的代码来简化大型、可靠程序的生成,:“你的程序中没有未处理的错误”。
  • 异常处理是Java中唯一正式的错误报告机制,并且通过编译器强制执行。
  • 异常处理很早以前就已经出现啦,C++的异常处理机制基于Ada,Java的异常处理基于C++;
  • 异常这个词有“我对此感到意外的意思”。
  • 异常处理可以降低错误处理代码的复杂度,如果不使用异常,就必须检查特定的错误,如一个引用是否为空(if(o == null))
    而异常机制将保证能够捕获这个异常,并在异常处理程序中处理这个错误【即catch块中】。
    这把“描述在正常执行过程中做什么事”和“除了问题怎么办”的代码相分离。

3.基本异常 抛出异常

  • 异常情形:是指阻止当前方法或作用于继续执行的问题。(return 和break 抛出异常都可实现)

    对于异常情形,就是不能执行下去,因为在当前的环境下无法获得必要的信息解决问题,所能做的就是从当前环境跳出

    并且把问题提交给上一级环境(如抛出异常【跳出】和捕获异常(处理环境) 或跳转到登录页)。这就是抛出异常时发生的事情。
  • 基本异常的创建执行过程:
    1. 使用new在堆上创建对象,
    2. 当前的执行路径被终止,不能执行下去,并且从当前环境中弹出对异常对象的引用(throw抛出异常对象).
    3. 然后,异常处理程序接管程序,并开始寻找一个恰当的地方来继续执行程序。这个恰当的地方就是异常处理程序(catch块)
    4. 异常处理程序的任务是将程序从错误状态中恢复,以使程序能换一种方式执行或继续运行下去。
  • 		if (t == null) {
    			//抛出异常,
    			throw new NullPointerException();
    		}
    将错误信息从当前环境中抛出,错误信息将会传播到异常处理机制中去。
  • 异常允许我们强制程序停止运行,并告诉我们出现了什么问题,或者强制程序处理问题,并返回到稳定状态。
  • 如果发生问题,异常将不允许程序沿着正常的路径继续走下去。
  • 事务是计算机中的合同法,如果出了什么问题,只需要放弃整个计算。异常使我们可以把每件事当做一个事务来处理。
    还可以看做是一个内建的恢复系统。

4.异常参数 创建异常

  • 使用new在堆上创建异常对象,这也伴随着存储空间的分配和构造器的调用。
  • 所有的标准异常类都有两个构造器,一个是默认构造器,另一个是接受字符串作为参数,以便能把相关信息放入异常对象的构造器
    throw new NullPointerException("t == null");
  • 使用new创建异常对象之后,此对象的引用将传给throw。
  1. 返回异常对象类型与方法设计的返回类型不同,但从效果上看,它就像从方法中返回的一样。
  2. 可以把异常处理看成一种不同的返回机制。
  3. 可以用抛出异常的方式从当前的作用域退出。这两种情况下,都将会返回一个异常对象,然后退出方法或作用域。

5.不同的异常

  • Throwable对象是异常类型的根类。
  • 对于不同的错误,要抛出相应的异常。错误信息可以保存在异常对象内部或者用异常类的名称来暗示。
    上一层环境通过这些信息来决定如何处理异常。(通常异常对象中仅有的信息就是异常类型,除此之外不包含任何有意义的内容。)

6.捕获异常

  • 如果在方法内部抛出了异常(或者在方法内部调用其他抛出异常的方法),这个方法将在抛出异常的过程中结束。
    如果不希望方法就此结束,可以设置try块来捕获异常(并在catch内处理异常),并尝试方法调用(可能产生的异常)。
  • 有了异常处理机制,可以在方法内设置一个特殊的块来捕获异常。
    然后秩序在一个地方就可以捕获所有异常。
  • 异常处理程序:异常处理程序紧跟在try块之后,以关键字catch表示:

    		try{
    			
    		}catch (Type1 id1) {
    			// TODO: handle exception
    		}catch (Type2 id3) {
    			// TODO: handle exception
    		}catch (Type3 id3) {
    			// TODO: handle exception
    		}

    每个catch子句像是接收仅且只有一个参数的方法。有时异常的类型已经给了足够的信息来对异常进行处理,但参数标识符(id1···)不可省略。
  1. 当异常被抛出时,异常处理机制将负责搜寻参数与异常类型相匹配的第一个处理程序。
  2. 然后进入catch子句执行,此时认为异常得到了处理。
    一旦catch子句结束,则处理程序的查找过程结束。
  3. 只有匹配的catch子句才能够得到执行。许多不同的方法调用可能会产生相同类型的异常,只需要提供一个只对此类型的catch即可。
  • 终止和恢复:
    1. 终止模型:java支持终止模型,一旦异常抛出,就表示错误已无法挽回,也不能回来继续执行。
    2. 恢复模型:希望异常被处理之后能继续执行程序。
    3. 如果想使用java实现恢复模型,就不能使用异常处理机制,或把try块放到while循环里,直到得到满意的结果。





相关文章推荐

异常处理基本概念和类别细分

1、异常机制 Throwable:有两个重要的子类:Exception(异常)和Error(错误),二者都是java异常处理的重要子类,各自都包含大量子类。 Error(错误):是...

Java基本概念-异常处理

一 异常处理 1 异常:程序在设计时或运行时产生的错误 2 异常处理:处理异常的过程,异常被处理后,异常就不存在了,程序就可以继续运行了。如果异常不被处理,程序就会被强行终止 3 异常的体...

Java编程思想笔记——第十二章 通过异常处理错误

Java编程思想笔记——第十二章 通过异常处理错误

Java编程思想第四版第十二章学习——通过异常处理错误(1)

使用异常带来的好处: 它降低了错误处理代码的复杂度。使用异常后,不需要检查特定的错误并在程序中的许多地方去处理它。因为异常机制将保证能够捕获这个错误且只需在一个地方处理错误,即异常处理程序中。 ...

Core Java第十二章知识点总结——异常处理

Core Java第十二章知识点总结——异常处理 知识点预览 异常的概念 异常处理的概念 Java中异常的分类 Java中常见未检查异常 throw关键字 异常的传递 异常处理的方式(throw...

Java编程思想第四版读书笔记——第十二章 通过异常处理错误

第十二章 通过异常处理错误

第十二章 通过异常处理错误

 Java的基本理念是“结构不佳的代码不能运行” 发现错误的理想时机是在编译阶段,然而,编译期间并不能找出所有的错误,余下的问题必须在运行期间解决。 1.概念 错误处理的解决方法是:用强制...

源码-PL/SQL从入门到精通-第十二章-异常处理机制-Part 2

异常处理可以让程序更“健壮”,品质更高,所以很重要! 好在PL/SQL的程序结构挺清晰,都是程式化的东西,没什么难理解的。 --代码12.11 Exception_int使用示例 DECLARE ...

Java编程思想第四版第十二章学习——通过异常处理错误(2)

1.Java异常标准Throwable类用来表示任何可以作为异常被抛出的类。Throwable对象可以分为两类:Error用来表示编译时和系统错误(一般无需关心),Exception是可以被抛出的基本...

JAVA编程思想学习总结:第十二章通过异常处理错误

(1)认识异常 (2)捕获异常 (3)使用finally (4)异常的限制 (5)异常匹配 (6)其它可选方式 (7)异常使用指南
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)