2.Java异常学习
1.Java异常的概念
- 异常的例子
- 1.除法就是一个需要捕获异常的例子,除数又可能是0
- 异常处理的基本流程如下
- 一旦发生异常,就使得程序不按照原来的流程继续的运行下去
- a.程序抛出异常
- try{
- throw new Exception();
- }
- b.捕获异常
- catch(Exception e){
- //异常处理程序
- }
- catch(Exception e){
- c.finally代码块
- 必须注意的是:在finally块中不能抛出异常。
- finally{
- //一定会被执行
- //除非catch中有System.exit(0);会推出Java虚拟机
- }
- finally{
- 总结:
- 1.当程序中抛出一个异常后,程序从程序中导致异常的代码处跳出,java虚拟机检测寻找和try关键字匹配的处理该异常的catch块,如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。如果没有找到处理该异常的catch块,则执行finally块代码。
- 2.线程的run函数是不能抛出异常的(可以在函数内部捕获并处理,但是不能向上提交),run函数的异常被提交给uncaughtExceptionHandler处理,后变会详细介绍
- 3.出了run函数其他的函数都可以把函数中抛出的异常向上级提交。
- 异常的结构

图1.异常结构(来自参考文献一)
- 异常分类
- 1.UnckeckedException--Error(不准确,但是Error确实是在运行时检查并抛出的)和RunTimeException-------程序中不需要进行补货
- 2.checkedException-----IOException、ClassNotFoundException、CloneNotSupportedException
- 这里的检查不检查针对的是编译器
- 常见的RunTimeException-NullPointerException、数组越界、字符串越界、算数错误(a/b)、参数类型错误(Integer.parseInt(“abc"))
在声明方法时候抛出异常
- public void openFile() throws IOException{//code}
- 一般函数申明的时候抛出的异常是chenckedException
- 覆盖父类某方法的子类方法不能抛出比父类方法更多的异常,所以,有时设计父类的方法时会声明抛出异常,但实际的实现方法的代码却并不抛出异常,这样做的目的就是为了方便子类方法覆盖父类方法时可以抛出异常。
- Cathch异常
- 注意:一个try块可以处理多种类型的异常(最多只有一个catch模块会被执行,与switch不相同)
- 逻辑上一个try后处理多个异常会报错—下面的代码会报错[先catch子类异常,之后再catch父类异常]
- 因为后一个catch不可能被执行到
- try{
- //code
- }catch(Exception e){
- }catch(RuntimeException e){//报错一定不会被执行到
- }
- 自定义异常---就是继承自已有的异常
- 最重要的其实是异常的名字
- class MyException extends Exception{}
- 默认的构造函数
- 1.super() 调用基类的构造函数进行初始化
- 2.super(message)
参考文献:http://www.codeceo.com/article/java-exception-learn.html#0-tsina-1-56987-397232819ff9a47a7b7e80a40613cfe1
2.Java异常学习的更多相关文章
- “全栈2019”22篇Java异常学习资料及总结
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"22篇Ja ...
- Java异常学习总结二
异常的处理方式 方式一:捕获异常(try-catch-finally) 捕获异常是通过三个关键词来实现的:try-catch-finally.用try来执行一段程序,如果出现异常,系统抛出一个异常,可 ...
- Java异常学习总结一
Java中的异常 定义 异常(Exception)就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序. 常见类型举例 所需文件找不到(ClassNotFoundException) 网 ...
- “全栈2019”Java异常第二十二章:try-with-resources语句详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- 《深入Java虚拟机学习笔记》- 第17章 异常
<深入Java虚拟机学习笔记>- 第17章 异常
- 【学习笔记】【Design idea】一、Java异常的设计思想、性能相关、笔记
1.前言: 异常.本该是多么优雅的东西,然而,得全靠自己在零散的信息中汇集. 学习笔记保持更新. 2.教材(参考资料) 其他 ①受检异常与非受检异常:https://www.cnblogs.com/j ...
- [Java学习笔记] Java异常机制(也许是全网最独特视角)
Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...
- Android(java)学习笔记168:Java异常分类
Java异常可分为3种: (1)编译时异常:Java.lang.Exception (2)运行期异常:Java.lang.RuntimeException (3)错误:Java.lang.Error
- 写给大忙人的ELK最新版6.2.4学习笔记-Logstash和Filebeat解析(java异常堆栈下多行日志配置支持)
接前一篇CentOS 7下最新版(6.2.4)ELK+Filebeat+Log4j日志集成环境搭建完整指南,继续对ELK. logstash官方最新文档https://www.elastic.co/g ...
随机推荐
- CentOS 7.2 安装配置mysql主从服务器
MySQL官方压缩包安装: 1:下载mysql官方版本,此处以目前最新版本5.7.14为例,下载的64位版本文件为: mysql-5.7.14-linux-glibc2.5-x86_64.tar 2: ...
- Mac 下面 apache 不解析PHP(or PHP 版本不对)的解决办法
Mac 升级到 EI Caption 之后发现 apache 的配置被重置了,记录下解决的步骤: 在 apache2 配置文件中修改 PHP 的扩展路径即可: vi /etc/apache2/http ...
- 【BZOJ-2668】交换棋子 最小费用最大流
2668: [cqoi2012]交换棋子 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1055 Solved: 388[Submit][Status ...
- 关于LuCi
好吧,又长见识了...相见恨晚的赶脚,恩,居然是我喜欢的lua.其主页在这里:http://luci.subsignal.org/ The initial reason for this projec ...
- HTML5 图片缩放功能
腾讯新闻上用的插件(xw.qq.com) 缩放插件scale.js (function(window, undefined) { var document = window.document, sup ...
- php提供更快的文件下载
在微博上偶然看到一篇介绍php更快下载文件的方法,其实就是利用web服务器的xsendfile特性,鸟哥的博客中只说了apache的实现方式,我找到了介绍nginx实现方式的文章,整理一下! let' ...
- TCP中的RST复位信号
TCP中的RST复位信号 在TCP协议中RST表示复位,用来关闭异常的连接,在TCP的设计中它是不可或缺的. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包.而接收 ...
- 文件夹锁定(Source)
文件夹锁定(Source)private void Lock(string folderPath){ try { string adminUserName = Environ ...
- 安全测试及B/S C/S安全性比较
一.用户认证安全的测试要考虑问题: 1. 明确区分系统中不同用户权限 2. 系统中会不会出现用户冲突 3. 系统会不会因用户的权限的改变造成混乱 4. ...
- 关于js中的时间处理
关于js编程, 主要是, 绝大部分是用 jquery. 但是, js原生的一些方法和属性也是要掌握的, 这个只是在 遇到的时候, 记一下就好了, 如: event的relatedTarget属性: 主 ...