JavaSE复习之九 基础知识:异常处理
来源:互联网 发布:哪个国家的域名免费 编辑:程序博客网 时间:2024/06/05 23:05
异常
一、概念
Java的异常机制:
1) 执行到引起异常的语句时,生成异常对象(记录异常信息),并抛出;
2) 寻找catch语句,若找到则执行catch语句,异常到此为止;
3) 若找不到,继续上抛,直到找到;
4) 如在main方法中还未找到,程序中断;
5) 每抛出一层,结束本层程序。
异常分类:
1) 运行时异常:RuntimeException类及其子类,可通过编译。
2) 受检查异常:除去RuntimeException类及其子类外,其他的Exception类及其子类都属于受检查异常。
异常的处理方式:
a. try\catch(finally):捕获异常;
b. throws:抛出异常(异常未处理,只是保证编译能够通过);
异常处理的语法结构:
Java的异常机制:
1) 执行到引起异常的语句时,生成异常对象(记录异常信息),并抛出;
2) 寻找catch语句,若找到则执行catch语句,异常到此为止;
3) 若找不到,继续上抛,直到找到;
4) 如在main方法中还未找到,程序中断;
5) 每抛出一层,结束本层程序。
异常分类:
1) 运行时异常:RuntimeException类及其子类,可通过编译。
2) 受检查异常:除去RuntimeException类及其子类外,其他的Exception类及其子类都属于受检查异常。
异常的处理方式:
a. try\catch(finally):捕获异常;
b. throws:抛出异常(异常未处理,只是保证编译能够通过);
异常处理的语法结构:
try{ // 可能发生异常的代码}catch(xx Exception 变量名){ // 发生异常时执行,catch由上而下执行,因此必须由小到大,catch语句块不能为空 // 异常处理语句}finally{ // 一定会执行的代码} // throws用于向上抛出异常,但是不处理异常
二、特性
1) try代码块不能脱离catch代码块或finally代码块而单独存在。try代码块后面至少有一个catch代码块或finally代码块;
2) try代码块后面可以没有或有一个、多个catch代码块,还可以没有或有一个、多个finally代码块。若catch代码块和finally代码块
并存,finally代码块必须在catch代码块后面;
3) try代码块后面可以只跟finally代码块;
4) 在try代码块中定义的变量的作用域为try代码块,在catch代码块和finally代码块中不能访问该变量;
5) 当try代码块后面有多个catch代码块时,JVM会把实际抛出的异常对象依次和各个catch代码块声明的异常类型匹配,若异常对象
为某个异常类型或其子类的实例,就执行这个catch代码块,而不会再执行其他的catch代码块;
6) 若一个方法可能出现受检查异常,要么用 try...catch语句捕获,要么用throws子句声明将它抛出,否则会导致编译错误;
7) throw语句后面不允许紧跟其他语句,因为这些语句永远不会被执行;
说明:
异常处理的合适位置应该遵循的规则:谁知道谁处理,谁负责谁处理,谁导致谁处理。
1) try代码块不能脱离catch代码块或finally代码块而单独存在。try代码块后面至少有一个catch代码块或finally代码块;
2) try代码块后面可以没有或有一个、多个catch代码块,还可以没有或有一个、多个finally代码块。若catch代码块和finally代码块
并存,finally代码块必须在catch代码块后面;
3) try代码块后面可以只跟finally代码块;
4) 在try代码块中定义的变量的作用域为try代码块,在catch代码块和finally代码块中不能访问该变量;
5) 当try代码块后面有多个catch代码块时,JVM会把实际抛出的异常对象依次和各个catch代码块声明的异常类型匹配,若异常对象
为某个异常类型或其子类的实例,就执行这个catch代码块,而不会再执行其他的catch代码块;
6) 若一个方法可能出现受检查异常,要么用 try...catch语句捕获,要么用throws子句声明将它抛出,否则会导致编译错误;
7) throw语句后面不允许紧跟其他语句,因为这些语句永远不会被执行;
说明:
异常处理的合适位置应该遵循的规则:谁知道谁处理,谁负责谁处理,谁导致谁处理。
三、应用
修订:
修订:
参考:
注:
0 0
- JavaSE复习之九 基础知识:异常处理
- JavaSE复习之二 基础知识:面向对象
- JavaSE复习之三 基础知识:常用API
- JavaSE复习之四 基础知识:集合
- JavaSE复习之五 基础知识:接口
- JavaSE复习之六 基础知识:抽象类
- JavaSE复习之七 基础知识:内部类
- JavaSE复习之八 基础知识:泛型
- JavaSe之异常处理篇
- 【javase复习】## day5 异常 ##
- Java复习之异常处理
- JavaSE基础复习一 :基础知识
- JavaSE学习笔记之-----异常处理
- java基础知识之异常处理
- Python 基础知识之 异常处理
- JavaSE 11 异常处理
- JavaSE 异常处理
- Javase—异常处理
- JavaSE复习之六 基础知识:抽象类
- JavaSE复习之七 基础知识:内部类
- 我不大喜欢编程,但是程序员还是最适合我的职业
- JavaSE复习之八 基础知识:泛型
- STLport-5.2.1 STL port配置; cl.exe 编译cpp:ms和cygwin两种模式;cygwin环境配置和使用、GCC编译入门
- JavaSE复习之九 基础知识:异常处理
- mysql ERROR 1045 (28000) Access denied for user解决方法
- JavaSE复习之十 高级特性:IO流和文件
- JavaSE复习之十一 高级特性:反射和注释
- JavaSE复习之十二 高级特性:并发
- 遥感植被指数
- JavaSE复习之十三 高级特性:网络编程
- 黑马程序员-objective-c基础学习
- JavaSE复习之十四 高级特性:GUI