异常、断言和线程
2021-11-16 18:50:05 0 举报
AI智能生成
登录查看完整内容
讲述了异常、管理异常、声明可能引发异常的方法、创建并引发自己的异常、如何使用和不使用异常、断言、线程等内容
作者其他创作
大纲/内容
没有漏洞
不会崩溃
处理任何情况
异常情况下进行恢复
程序不会存在
没有预料到的问题
没有时间测试
控制范围之外
常见情况
输入数据不对
文件损坏
无法连接网络
设备没有响应
太阳黑子
原因不明
包括
导致程序错误,称为异常
的情况
产生原因
异常可以被捕获
管理异常
处理运行阶段发生错误的对象
本质
识别错误做出相应
帮助程序校正状态
作用
从潜在的问题中恢复
在代码中处理异常
预期有潜在的异常
告诉Java和方法
如何引发它
使之更健壮
使用异常来限制代码
检测到异常时
特性
虚拟机
类
程序故意异常
引发异常的情况
每个人要完成的工作更多了
缺点
避免程序奔溃
对异常进行处理
捕获异常定义
处理异常
异常引发,创建该类的实例
Throwable类派生
运行环境内部的错误
Error
代码不够健壮造成
运行阶段异常
其他异常
Exception
Throwable类的子类
较通用的错误
超类Exception
更具体的错误
子类
层次结构
java.lang
java.io定义了IOException
java.net
其他包
包
异常类
异常
声明方法时,须使用限定符指出错误
方法指出引发的错误类型
降低由于致命错误而崩溃的可能性
检测的原因
Java将完成检测
Java命令该方法的用户对错误进行处理
指出可能引发的错误
定义方法
如何确保处理了潜在问题
异常一致性检测
引发异常的方法的代码放在try块中
catch块中对异常进行处理
捕获异常完成的工作
捕获的异常类和变量名
子句的圆括号中包含
块中,使用变量名引用异常对象
一条catch语句中捕获一组异常
catch语句介绍
显示详细的错误信息
描述发生的情况
调用getMessage()方法
显示导致异常的方法调用序列
调用printStackTrace()方法
异常对象作用
将多个catch块用于同一个try块中
使用多个catch块时,执行第一个匹配的catch块
在catch块中使用Exception类,在后面多个catch块中使用Exception类
发生意料之外的问题
捕获多种没有继承关系的异常
保护代码和捕获异常
释放外部资源
关闭打开的文件
必须执行的操作
不管try块如何结束,finally块中的语句都会被执行
finally是可选的
将这些代码放在try...catch块的finally中
在循环中,可在return、break、continue后面使用,来执行清理代码
其他用途
finally子句
使用throws子句
方法中指出引发的异常
关键字throws
将引发的异常的名称
在方法的定义后面加上
将其放在一个throws子句中,使用逗号分隔
方法可能引发多种异常
使用超类指出方法可能引发这种异常的所有子类
用法
该方法的设计者
调用者之间的约定
方法的整体描述
方法的参数类型
返回类型
正常情况下的语义
指出
该方法能执行的非常规工作
使用throws,可以添加信息
如果发生错误,该方法可能引发异常
含义
throws子类
根据方法的操作
常规情况
不必处理
运行环境处理
很常见的情况
任何时候,任何地方发生的异常
定义
它是RuntimeException和Error的子类
无需检查的异常
创建并引发自己的异常
判断引发的异常
应引发哪些异常
在方法中对某个异常进行处理
不合理
将异常传递给调用的方法的方法
合理
可能包含throws子句
方法定义
可能引发合适的异常
处理异常的工作由调用方法的方法哇按此
告诉Java编译器已对某个异常进行处理的方式
创建一个无需使用try-catch块便能处理数字格式的异常的方法
throws子句声明方法
传递异常
新方法的throws子句列出的异常并不一定与被覆盖的方法相同
引发更少的异常
不引发任何异常
新方法
覆盖方法处理throws的特殊规则
子类方法不能引发其超类方法没有引发的异常
throws和继承
声明可能引发异常的方法
引发
捕获
异常的两面性
Java运行环境
Java类中的方法
异常由哪些方法引发
引发Java类库中定义的标准异常
异常的来源
声明本身不引发异常
创建该异常类的实例
使用throws语句引发它
实现
可能接受参数,取决于使用的异常类
可以更详细的描述问题
最常见的参数是字符串
异常的构造方法
方法将立即结束
不执行任何其他代码
不会由返回值
调用方法时,没有将调用放在try块中
提供相应的catch块
程序由于引发的异常而退出
异常引发后的处理
引发异常
创建的异常都应是Exception层次结构的一部分
如果没有于要创建的异常密切相关的异常,考虑继承Exception
要求
接受任何参数
确保字符串应用到正确的地方
调用super()
接受一个字符串参数
异常类的构造方法
创建自己的异常
throws子句
try语句
throw语句
管理异常并传递给调用方法的三种机制
异常处理程序可以嵌套
沿方法调用链向上传递
终止程序并打印一条错误信息
系统将对未捕获的异常进行处理
异常的执行
组合使用throws、try和throw
try和catch语句来处理异常
在方法定义中添加throws子句,将异常沿调用链向上传递
throw重新引发它
catch捕获异常
方法调用可能引发异常的方法时,可以采用
之一
分别处理其中的每一种异常
引发多种异常的方法
使用throws子句声明
引发同样的异常
该异常的子类
覆盖超类中的方法
方法引发自己的异常
什么时候使用异常
简单表达式可以避免的异常
可以控制异常情况时
什么时候不使用异常
会破坏编译器进行的检查工作
不经处理就将异常丢弃
程序的致命错误
忽略警告并想办法避开
方法更难以使用
方法中加入throws子句避免异常
糟糕的异常使用方式
何时使用和不使用异常
条件语句
布尔值
指出程序运行运行
确保程序正确运行的方式
检测错误的手段
条件表达式
是一个
结果为true或false的表达式
布尔变量
返回布尔值的方法
必须包含
assert指定字符串
引发AssertionError异常
断言不为真
assert后面
-ea
在其他所有类中启用
-ea后加上冒号和类名
启用类中的断言
对于默认包,为...
-ea:后面加上包名
启用特定包中的断言
需要启用断言功能
JDK中的工具不支持
默认情况下
忽略所有assert语句
没有使用标记-ea或esa
运行包含断言的类时
运行断言
不能将assert作为变量名
它并非一种可靠的,提高类的可靠性的途径
断言可以关闭
注意
断言
实现Runnale接口对象
与其他部分一起运行
更高效地利用其资源
将所有耗时的行为都放在单独的类中
占用大量时间处理
连续运行
适用场景
的任务
java.lang包中的Thread类
线程的实现
调用Thread类的sleep(long)方法
让程序暂停一段时间
引发InterruptedException异常
暂停的线程由于某些原因被中断
最简单线程用法
创建一个从Thread派生而来的类
将implements加入到类声明中,后面加上接口名称
另一个类中实现Runnable接口
创建线程的方式
对象将以相同的方式启动或终止线程
导致run()被调用
调用start()
启动线程
编写线程化程序
线程化应用程序
导致Java运行环境不稳定
可能在程序中引入难于检测的错误
调用stop()
让线程运行run()方法的循环在某个变量的值发生改变后结束
运行的线程有一个指向它的变量时,才执行run()中的循环
实现方式
终止线程
线程
异常、断言和线程
0 条评论
回复 删除
下一页