第十二章 异常处理 概念和基本使用
来源:互联网 发布:淘宝小号哪里买的安全 编辑:程序博客网 时间:2024/05/21 09:20
1.为什么要有异常处理
- Java的基本理念是结构不佳的代码不能运行。
- why:发现错误的理想时机是在编译阶段,余下的问题在运行期间解决,这就需要错误源能通过某种方式,把适当的信息传递给某个接受者【异常处理机制指导如何传递】——该接受者将指导如何正确处理这个问题(catch块)。
2.异常处理机制是什么,作用
- Java使用异常来提供一致的错误报告模型,使得构件(报告模型)能够与客户端代码可靠地沟通问题,以达到创建健壮系统的目的。、
- java异常处理的目的在于通过使用少于目前数量的代码来简化大型、可靠程序的生成,:“你的程序中没有未处理的错误”。
- 异常处理是Java中唯一正式的错误报告机制,并且通过编译器强制执行。
- 异常处理很早以前就已经出现啦,C++的异常处理机制基于Ada,Java的异常处理基于C++;
- 异常这个词有“我对此感到意外的意思”。
- 异常处理可以降低错误处理代码的复杂度,如果不使用异常,就必须检查特定的错误,如一个引用是否为空(if(o == null))
而异常机制将保证能够捕获这个异常,并在异常处理程序中处理这个错误【即catch块中】。
这把“描述在正常执行过程中做什么事”和“除了问题怎么办”的代码相分离。
3.基本异常 抛出异常
- 异常情形:是指阻止当前方法或作用于继续执行的问题。(return 和break 抛出异常都可实现)
对于异常情形,就是不能执行下去,因为在当前的环境下无法获得必要的信息解决问题,所能做的就是从当前环境跳出
并且把问题提交给上一级环境(如抛出异常【跳出】和捕获异常(处理环境) 或跳转到登录页)。这就是抛出异常时发生的事情。 - 基本异常的创建执行过程:
- 使用new在堆上创建对象,
- 当前的执行路径被终止,不能执行下去,并且从当前环境中弹出对异常对象的引用(throw抛出异常对象).
- 然后,异常处理程序接管程序,并开始寻找一个恰当的地方来继续执行程序。这个恰当的地方就是异常处理程序(catch块)。
- 异常处理程序的任务是将程序从错误状态中恢复,以使程序能换一种方式执行或继续运行下去。
if (t == null) {//抛出异常,throw new NullPointerException();}
将错误信息从当前环境中抛出,错误信息将会传播到异常处理机制中去。- 异常允许我们强制程序停止运行,并告诉我们出现了什么问题,或者强制程序处理问题,并返回到稳定状态。
- 如果发生问题,异常将不允许程序沿着正常的路径继续走下去。
- 事务是计算机中的合同法,如果出了什么问题,只需要放弃整个计算。异常使我们可以把每件事当做一个事务来处理。
还可以看做是一个内建的恢复系统。
4.异常参数 创建异常
- 使用new在堆上创建异常对象,这也伴随着存储空间的分配和构造器的调用。
- 所有的标准异常类都有两个构造器,一个是默认构造器,另一个是接受字符串作为参数,以便能把相关信息放入异常对象的构造器
throw new NullPointerException("t == null");
- 使用new创建异常对象之后,此对象的引用将传给throw。
- 返回异常对象类型与方法设计的返回类型不同,但从效果上看,它就像从方法中返回的一样。
- 可以把异常处理看成一种不同的返回机制。
- 可以用抛出异常的方式从当前的作用域退出。这两种情况下,都将会返回一个异常对象,然后退出方法或作用域。
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···)不可省略。
- 当异常被抛出时,异常处理机制将负责搜寻参数与异常类型相匹配的第一个处理程序。
- 然后进入catch子句执行,此时认为异常得到了处理。
一旦catch子句结束,则处理程序的查找过程结束。 - 只有匹配的catch子句才能够得到执行。许多不同的方法调用可能会产生相同类型的异常,只需要提供一个只对此类型的catch即可。
- 终止和恢复:
- 终止模型:java支持终止模型,一旦异常抛出,就表示错误已无法挽回,也不能回来继续执行。
- 恢复模型:希望异常被处理之后能继续执行程序。
- 如果想使用java实现恢复模型,就不能使用异常处理机制,或把try块放到while循环里,直到得到满意的结果。
0 0
- 第十二章 异常处理 概念和基本使用
- 第十二章 通过异常处理错误 基本使用
- 第十二章 异常处理错误
- 第十二章 通过异常处理错误
- 第十二章 通过异常处理错误
- 第十二章 通过异常处理程序
- 第十二章 通过异常处理错误
- 第十二章:通过异常处理问题
- 第十二章:通过异常来处理错误
- dwr的基本使用,异常处理,和spring集成方法
- 10.1 异常的概念和处理机制
- C++异常的概念和处理机制
- 第十二周作业:异常处理!
- 【异常】异常的概念,分类和处理机制
- Core Java第十二章知识点总结——异常处理
- 《Java 编程思想》--第十二章:通过异常处理错误
- JAVA编程思想-第十二章 通过异常处理错误
- 第十二章——通过异常处理错误
- Android自定义ViewGroup实战-----流式布局
- openPTSP的运行及修改
- KODI16.1编译:
- bootstrap-wysiwyg这个坑
- C#项目中操作Excel文件——使用NPOI库
- 第十二章 异常处理 概念和基本使用
- 读书笔记之《重构》第二章
- 位运算
- 大数据Spark “蘑菇云”行动第34课:在IDEA中开发Spark实战
- SpringMVC后台接受前台传值的方法
- MSSQL、MySQL 数据库删除大批量千万级百万级数据的优化
- Java获取当前时间的年月日方法
- EL表达式获取获取用户性别信息
- FMDB的用法讲解