第十二章 通过异常处理错误
来源:互联网 发布:淘宝旺铺基础版店招 编辑:程序博客网 时间:2024/05/21 07:12
终止与恢复:
终止模型、回复模型。程序员喜欢用“终止模型”处理
创建自定义异常:
必须从已有的异常类继承
对于异常,最重要的部分是类名
printStackTrace()
从方法调用处直到异常抛出处
打印Throwable和Throwable的调用栈轨迹
异常与日志记录:
使用java.util.logging工具将输出记录到日志中
Logger.getLogger()方法创建了一个String参数相关联的Logger对象
severe()向Logger写入的最简单方式
StringWriter trace = new StringWriter();
printStackTrace(new PrintWriter(trace));
logger.severe(trace.toString());
异常说明:
属于方法声明的一部分,紧跟在形式参数列表之后
要么处理这个异常,要么就在异常说明中表示此方法将产生异常
throws关键字
捕获所有异常:
- Throwable fillInStackTrace()用于在Throwable对象的内部记录栈帧的当前状态,通过把当前栈的调用信息填入原来那个异常对象而建立的
- 显示throw之后try块内的代码无法到达,编写会报错
栈轨迹:
StackTraceElement[]getStackTrace()
提供编程访问由printStackTrace()输出的堆栈跟踪信息。返回堆栈跟踪元素的数组,每个元素表示一个堆栈帧。数组的第零个元素(假定数据的长度为非零)表示堆栈顶部,它是序列中最后的方法调用。通常,这是创建和抛出该throwable 的地方。数组的最后元素(假定数据的长度为非零)表示堆栈底部,它是序列中第一个方法调用。
重新抛出异常:
重新抛出异常会把异常抛给上一级的异常处理程序,同一个try块的后续catch子句将被忽略
有可能在捕获异常之后抛出另一种异常
异常链:
三种基本异常类提供了带有cause参数的构造器:Error、Exception、RuntimeException
其他类型的异常链接起来,使用initCause()方法
Java标准异常:
Error用来表示编译时和系统错误
异常的基本的概念是用名称代表发生的问题
RuntimeException:
自动被Java虚拟机抛出
如果RuntimeException没有被捕获而直达main(),那么在程序退出前将调用异常的printStackTrace()方法
使用finally进行清理:
finally子句总能被执行
当要把除内存之外的资源恢复到它们的初始状态,就要用到finally子句
在return中使用finally:
在finally类内部,从何处返回无关紧要,finally子句总是会执行
缺憾:异常丢失
异常的限制:
- 当覆盖方法的时候,只能抛出在基类方法的异常说明里列出的那些异常
- 异常限制对构造器不起作用,派生类的构造器的异常说明必须包含基类构造器的异常说明
- 派生类构造器不能捕获基类构造器抛出的异常
- 派生类方法可以不抛出任何异常
- 不能基于异常说明来重载方法
构造器:
对于在构造阶段可能会抛出异常,并且要求清理的类,最安全的使用方式是使用嵌套的try子句
在创建需要清理的对象之后,立即进入一个try-finally语句块
异常匹配:
派生类的对象也可以匹配其基类的处理程序
其他可选方式:
只有在你知道如何处理的情况下才捕获异常
把异常传递给控制台:
从main()传递给控制台
把“被检查的异常”转换为“不检查的异常”:
直接把“被检查的异常”包装进RuntimeException里面,还可以用getCause()捕获并处理特定异常
异常使用指南:
- 在恰当的级别处理问题
- 解决问题并重新调用产生异常的方法
- 进行少许修补,然后绕过异常发生的地方继续执行
- 用别的数据进行计算,以代替方法与记会返回的值
- 把当前运行环境下能做的事情尽量做完,然后把相同的异常重抛到更高层
- 把当前运行环境下能做的事情尽量做完,然后把不同的异常抛到更高层
- 终止程序
- 进行简化
- 让类库和程序更安全
- 第十二章 通过异常处理错误
- 第十二章 通过异常处理错误
- 第十二章 通过异常处理错误
- 第十二章:通过异常来处理错误
- 《Java 编程思想》--第十二章:通过异常处理错误
- JAVA编程思想-第十二章 通过异常处理错误
- 第十二章——通过异常处理错误
- 第十二章 通过异常处理错误 基本使用
- java编程思想 第十二章 通过异常处理错误
- 【学习笔记】第十二章 通过异常处理错误
- java编程思想读书笔记----第十二章 通过异常处理错误
- think in java 第十二章 通过异常处理错误
- 第十二章 异常处理错误
- 第十二章 通过异常处理程序
- 第十二章:通过异常处理问题
- JAVA编程思想学习总结:第十二章通过异常处理错误
- Java编程思想第四版第十二章学习——通过异常处理错误(1)
- Java编程思想第四版读书笔记——第十二章 通过异常处理错误
- Firemonkey的旁门左道[七]
- 第十一章 持有对象
- linux 内核tcp接收数据的实现
- Poj 3279 & 1222(开关问题)
- Firemonkey的旁门左道[八]
- 第十二章 通过异常处理错误
- Python 总结
- linux内核tcp的定时器管理(一)
- Android简单组件之_ImageButton_CheckBox
- CxImage
- linux内核tcp的定时器管理(二)
- 第十三章 字符串
- HDU-4622-Reincarnation
- 前端UI,javascript,css框架集合