java 中的异常处理机制
来源:互联网 发布:淘宝网售后服务 编辑:程序博客网 时间:2024/05/16 15:18
平时敲代码的时候,编辑器有异常会有提示,显示什么就点什么了,却没有深入了解这些为什么会有这些异常。
5个关键字:
try,catch,throw,throws,finally
Throwable为程序中所有错误处理的父类
有两个重要的子类: Error(错误)和 Exception(异常)
Exception(异常):是程序本身可以处理的
主要包括:
RuntimeException:属于不可查异常,表示代码本身存在BUG,不是try-catch能解决的。
例如:
NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
IndexOutOfBoundsException - 下标越界异常
这些异常在编译期是无法检测出来的
不是RuntimeException:就是编译时异常,比如你在处理文件流时的I/O问题,就属于编译时异常。这个时候用thr{}catch 来捕获或者 throws即可。
例如:IOException,包括其子类 :
EOFException 文件已结束异常
FileNotFoundException 文件未找到异常
Error(错误):是程序无法处理的错误,这种异常被设计成不被捕获,因为这种异常产生于JVM自身。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。
现在理解之前说的5个关键词
异常处理有两种方式:
1.try…catch…finally
try:用来检测异常的
catch:用来捕获异常的
finally:释放资源的(可以有,也可以没有)
*可以多个catch,最多只能有一个finally
*无论try包围的语句中是否发生异常,finally必须执行
(有几种情况不执行:1.代码原因例如死循环在try块中 …….2.System.exit(),程序被终止……3.JVM崩溃了…..4.忽然断电……5.补充一个,多线程中若将含有finally块的线程设置为守护线程,setDaemon(true),当非守护线程结束时,守护线程会被JVM立即停止)
*return可以放在try块里面,但是finally块在返回前要被执行
2.throw,throws
thrwos是方法可能抛出异常的声明
语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。
主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
出现在方法函数头
throw是语句抛出的异常
语句用在方法体内,表示抛出异常,由方法体内的语句处理。
是具体向外抛异常的动作,所以它是抛出一个异常实例。
出现在函数体
程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。
throw 抛出的只能够是可抛出类Throwable 或者其子类的实例对象。如 throw new IOException;
也可以自定义异常类,当然要继承Exception类;
目前理解这么多,若有更深的理解会补充
技术小白,仅供参考,若有理解不到位的地方,欢迎提出问题,一起进步哈
- Java中的异常处理机制
- Java中的异常处理机制
- JAVA中的异常处理机制
- Java中的异常处理机制
- java中的异常处理机制
- java中的异常处理机制
- java中的异常处理机制
- Java中的异常处理机制
- java中的异常处理机制
- Java中的异常处理机制
- JAVA中的异常处理机制
- java中的异常处理机制
- Java中的异常处理机制
- java 中的异常处理机制
- Java中的异常处理机制
- java中的异常处理机制
- Java中的异常处理机制
- JAVA中的异常处理机制
- 浅析shell的工作原理
- Effective.Java 读书笔记(6)内存泄漏
- github之最简单的将项目上传到仓库
- 技术研究思路以及Spark基础学习笔记
- linux下安装qt5和卸载qt5
- java 中的异常处理机制
- 报错?!-20170213-command 'x86_64-linux-gnu-gcc' failed with exit status 1
- 2017-02-13 Head First Java 第一章 上
- PHP开发APP接口(二):封装通信接口方法
- UI渲染机制优化方面理解
- PHP+jQuery+Flash完美演示翻盘抽奖
- 使用JavaWeb服务器管理数据源:Tomcat
- LeetCode: 3Sum Closest
- Android——Fragment(碎片)的静态加载方式....