2022年异常及其处理知识点.docx
《2022年异常及其处理知识点.docx》由会员分享,可在线阅读,更多相关《2022年异常及其处理知识点.docx(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选学习资料 - - - - - - - - - 学习必备 欢迎下载一.反常处理概述1. 程序正常执行次序:逐语句次序执行 . 2. 语句的正常完成和突然完成;3. 反常显现 .1 执行过程中显现错误时,系统会自动创建一个对象称作反常对象,包含出错信息并且抛出这个对象,2. 程序执行期间遇到无法连续执行的情形,程序员可以创建一个反常对象,然后使用 throw 语句抛出这个反常对象;4. 反常处理过程 . 1)终止程序的正常执行次序,转去查找处理该反常的代码 . 查找策略:第一在当前函数查找,没有找到就本方法终止,到调用该方法的方法中继续查找, 假如始终查找到main 方法也没有找处处理该反常的
2、代码,打印堆栈踪迹后程序结束;2).处理反常 .假如在调用链的某个方法中找处处理这个反常的代码,就复原程序正常 执行状态,执行这段代码以及之后的代码;二.与反常有关的语句1.throw expression 语句;2.try-catch-finally 语句 三.Throwable 类及其子类Throwable Error Exception RuntimeException 检查型反常 = Exception 及其子类 - RuntimeException 及其子类 Throwable 类的构造函数和方法 构造函数Throwable ThrowableString message 方法Str
3、ing getMessage String getLocalizedMessage void printStackTrace Throwable fillInStackTrace 四. throws 子句 -方法定义的完整语法;1.语法 . 方法修饰符结果类型方法名(形参表)throws 子句方法体throws 子句的语法是throws 反常类型名1, , 反常类型名n 其中 throws 是 java 保留字,诸反常类型名是检查型反常的名字;2. 对方法体的限制 . 方法体中抛出的任何检查型反常,无论是由throw 语句抛出的仍是由于调用其它方法而发生的检查型反常,其类型都必需是 throw
4、s 子句中列出的某个类型或其子类型;否就编译期间出错;因此,编译器能够保证:通过编译的程序中的全部检查型反常都得到了处理;名师归纳总结 - - - - - - -第 1 页,共 10 页精选学习资料 - - - - - - - - - 3. 对方法重写的限制. 学习必备欢迎下载子类重写方法f,那么子类的f 不能抛出比基类f 更多的检查型反常;但是答应重写的f 抛出较少的检查型反常,甚至不抛出任何检查型反常;重写子类方法时,假如答应子类方法抛出比基类方法更多的反常,那么将破坏“ 通过编译的程序中的全部检查型反常都得到了处理” 这一事实;反常及其处理 .一.反常处理概述在运行过程中,应用程序可能遇
5、到各种错误;例如,从一个已经关闭的流读数据;访问数组时数组下标越界;使用空引用调用方法等;很多程序员不检查可能的错误,理由是假如每执行一个语句都检查是否出错,将使程序的结构纷乱,难以懂得;为明白决程序的正确性和程序结构的清楚性之间的冲突,程序设计语言引入了反常及反常处理机制;下面是 java 语言的反常处理机制的粗略过程 : 1.程序运行时出错,抛出反常对象 .当程序执行过程中显现错误 例如 0 做除数,数组下标越界等 时,系统会自动创建一个对象 称作反常对象,包含出错信息 并且抛出这个对象,或者在程序执行期间遇到无法连续执行的情形 例如打开文件失败,连接数据库失败等 ,程序员可以创建一个反常
6、对象,然后使用throw 语句抛出这个反常对象;2.终止程序的正常执行次序,转去查找处理该反常的代码 .只要有反常对象 E 被抛出 无论是由系统抛出的仍是由 throw 语句抛出的 ,程序就立刻停止正常的执行次序,转去查找处理反常对象 E 的代码;查找策略是第一在当前方法中查找,没有找到就本方法终止,到调用该方法的方法中连续查找,假如始终查找到 打印堆栈踪迹后 程序终止;main 方法也没有找处处理该反常的代码,3.处理反常 .假如在调用链的某个方法中找处处理这个反常的代码,就执行这段代码以 及之后的代码;与反常处理有关的语句是 二. 与反常处理有关的语句1. throw 语句 语法: thr
7、ow expression;throw 语句,try-catch-finally 语句和 Throwable 类及其子类;这里 throw 是保留字, expression是一个表达式, 它的值肯定是某个 Throwable 类对象的引用; throw 语句的功能是:运算表达式得到一个 Throwable 对象的引用 e,抛出 e 使得系统进入反常处理状态,查找处理该类反常的 catch 子句;假如找到这样的 catch 子句,系统恢复到正常执行程序的状态,开头处理反常; 假如始终找不处处理该类反常的 catch 子句, 线程终止;例.看下面代码段/创建 Throwable 对象,系统并不进入
8、反常处理状态Throwable e=new Throwable; /其它代码,系统正常执行这些代码if B throw e; /抛出反常,系统进入反常处理状态,查找处理 e 的代码;else /系统仍然处于正常执行程序的状态,执行这些代码;2. try-catch-finally 语句语法 1:名师归纳总结 - - - - - - -第 2 页,共 10 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载try statements/ 称作 try 块catchException 类型 1 catchException 类型 n 语法 2:try e1statements_
9、1/ 称作 catch块 enstatements_n/ 称作 catch 块statements/ 称作 try 块catchException 类型 1 catchException 类型 n e1statements_1/ 称作 catch块 enstatements_n/ 称作 catch 块finally statements/ 称作 finally 块这里 try, catch,finally 都是 java 语言的保留字;e1,e2, ,en 是标识符;要特殊留意,诸catch 子句的反常类型应当子类型在前,父类型在后,否就编译出错;由于父类型的 catch会拦截子类型的反常对象
10、,使子类型的catch 永久也不会起作用,成为不行抵达的代码;执行 try 块正常完成try 块正常完成?因抛出 V 突然终止try-catch 语句正常完成有 catch 捕捉 V?没有执行下一语句有正常完成给 catch 中的 e 赋值 V try 语句因抛出 V 突然完成执行捕捉 V 的 catch 块catch 块正常完成?因缘由 R 突然完成try 语句因 R 突然完成try-catch 语句的语义名师归纳总结 - - - - - - -第 3 页,共 10 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载执行 try 块正常完成没有因抛出 V 突然完成1 tr
11、y 块正常完成?有 catch 捕捉 V?执行 finally 块2 因缘由 S 突然完成正常完成有F 块正常完成?给 catch 中的 e 赋值 V 正常执行捕捉 V 的 catch 块try 语句try 语句catch 块正常完成正常完成因缘由 S 1 执行下一语句突然完成;因缘由 R 突然完成2 因缘由 S 突然完成3 3 执行 finally 块执行 finally 块因缘由 S 突然完成正常完成?try 语句因缘由正常终止?try 语句因缘由S 正常正常try 语句try 语句因抛出 V S 突然完成;因缘由 R 突然完成;突然完成突然完成遗忘缘由 R 遗忘抛出 V try-catc
12、h-finally 语句的语义例. 名师归纳总结 - - - - - - -第 4 页,共 10 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载package test_try; class MyError extends Error /定义一个 Error 的子类 MyError MyError String ssupers; public class test_try static void throw_Error /定义方法,它抛出 Error 或 Exception throw new MyError zzzz; / throw new NullPointerE
13、xception; public static void mainString args try throw_Error ; /调用抛出反常的方法 catch NullPointerException e /捕捉并处理反常 System.out.printlnNullPointerException; catch Exception e /捕捉并处理反常 System.out.printlnException; finally /finally 块 System.out.printlnExecuting finally block.; 第一个 throw 语句起作用时 ,程序的输出;由于 My
14、Error继承自 Error ,因此两个catch 子句都不能捕捉这个反常;test_try.MyError: zzzz /反常没被捕捉;调用uncaughtException方法,输出堆栈踪迹;at test_try.test_try.throwErrortest_try.java:8 at test_try.test_try.maintest_try.java:13 Executing finally block. /此输出说明finally 块肯定执行;Exception in thread main 其次个 throw 语句起作用时程序的输出;processing NullPointe
15、rException Executing finally block. 三. 反常类 Throwable这时反常得处处理,因此不会输出堆栈踪迹;名师归纳总结 - - - - - - -第 5 页,共 10 页精选学习资料 - - - - - - - - - 学习必备 欢迎下载是全部反常类的超类;它只有两个子类 Error 和 Exception;Error 类及其子类表示程序具有严峻的错误,例如 VirtualMachineError就是 Error 的一个子类;Exception 类表示程序的某种状态,该状态是应用程序期望捕捉的;Exception 类有为数众多的子类,像IOExceptio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 异常 及其 处理 知识点
限制150内