异常
来源:互联网 发布:sql 左联 编辑:程序博客网 时间:2024/04/25 03:53
异常:是在运行时期发生的不正常情况
在java中用类的形式对不正常情况进行了描述和封装对象
描述不正常的情况的类,就称为异常类
以前正常流程代码和问题处理代码相结合,
现在将正常流程代码和问题处理代码分离,提高阅读性
其实异常就是java通过面向对象的思想将问题封装成了对象
用异常类对其进行描述,不同的问题用不同的类进行具体的描述,比如角标越界、空指针等等
问题很多,意味着描述的类也很多
将其共性进行向上抽取,形成了异常体系
最终异常就分成了两大类:
Throwable:无论是error,还是异常,都是问题,就应该抛出,让调用者知道并处理。该体系的特点就在于throwable及其所有子类都具有可抛性
可抛性其实是通过两个关键字来体现的:throw和throws,凡是可以被这两个关键字所操作的类和对象都具有可抛性
1.一般不可处理的。Error
特点:是由jvm抛出的严重性的问题
这种问题发生一般不针对性处理,直接修改程序
2.可处理的。 Exception
该体系的特点:
子类的后缀名都是用其父类名作为后缀,阅读性很强
所以自定义异常时,要么继承exception,要么继承runtimeexception
throws和throw的区别:
1.throws使用在函数上
throw使用在函数内
2. throws抛出的是异常类,可以抛出多个,用逗号隔开
throw抛出的是异常对象
异常处理的捕捉形式:
这是可以对异常进行针对性处理的方式
具体格式是:
try
{
// 需要被检测异常的代码
}
catch(异常类 常量) // 该变量用于接收发生的异常对象
{
// 处理异常的代码
} finally
{
// 一定会被执行的代码
}
多catch情况下父类的catch放在最下面
异常处理的原则:
1.函数内容如果抛出需要检测的异常,那么函数上必须要声明
否则必须在函数内用try catch捕捉,否则编译失败
2.如果调用到了声明异常的函数,要么try catch要么throws,否则编译失败
3.什么时候catch,什么时候throws呢?
功能内容可以解决,用catch
解决不了,用throws告诉调用者,由调用者解决
4.一个功能如果抛出了多个异常,那么调用时,必须有对应多个catch进行针对性的处理
内部有几个需要检测的异常,就抛及格异常,抛出几个,就catch几个
try catch finally 代码块组合特点:
1.try catch finally
2.try catch(多个)当没有资源需要释放时,可以不用定义finally
3.try finally 异常无法直接catch处理,但是资源需要关闭
异常的注意事项:
1.子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类异常或父类异常的子异常
2.如果父类抛出多个异常,那么子类只能抛出父类异常的子集
简单说:子类覆盖父类只能抛出父类的异常或者子类或者子集
注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,就只能try
- 异常
- 异常!
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- 异常
- Spark源码分析之-deploy模块
- Mac开发,选中窗口任意地方,可移动窗口。
- mysql性能优化标准
- Labview设计计算机--加法器(4)
- cmake中一些预定义变量
- 异常
- Gradle命令为Unity导出Jar备忘
- Spark源码分析之-scheduler模块
- POI 动态合并单元格
- php 获取指定格式时间
- Vue组件slot的用法
- 程序员开发微信小程序前,一定要知道的几件事
- (待思考--不采用逆置等的思想)107. Binary Tree Level Order Traversal II
- 用Vs2013打开编译vs2012的工程 error MSB8020