- 浏览: 27081 次
- 性别:
- 来自: 福州
最新评论
一、概述
在Java程序设计语言中,异常对象都是派生自java.lang.Throwable类的一个实例!所有派生于Error类或RuntimeException类的异常称为未检查(unchecked)异常,所有其他的异常称为已检查(checked)异常。
异常处理的方法有二种:1. 声明异常 2. 捕获异常
Throwable
|
---------------
| |
Error Exception
|
---------------
| |
Check Runtime
Exception Exception
二、声明异常
关键字: throws, throw
1. 已检查异常必须声明,未检查异常可声明也可不声明。
2. 如果在子类中覆盖了超类的一个方法,子类方法中声明的已检查异常(未检查异常可以不再声明)不能超过超类方法中声明的异常范围(也就是说,子类方法中抛出的异常范围更小,或者根本不抛出任何异常(此时为捕获了超类抛出的所有已检查异常))。
3. 如果超类方法中没有抛出任何已检查异常,子类也不能抛出任何已检查异常。
4. Java 编译器严格的执行throws说明符。如果调用了一个抛出已检查异常的方法,就必须对它进行处理,或者将它传递出去。
三、捕获异常
关键字:try, catch, finally
四、总结
在Java程序设计语言中,异常对象都是派生自java.lang.Throwable类的一个实例!所有派生于Error类或RuntimeException类的异常称为未检查(unchecked)异常,所有其他的异常称为已检查(checked)异常。
异常处理的方法有二种:1. 声明异常 2. 捕获异常
Throwable
|
---------------
| |
Error Exception
|
---------------
| |
Check Runtime
Exception Exception
二、声明异常
关键字: throws, throw
1. 已检查异常必须声明,未检查异常可声明也可不声明。
2. 如果在子类中覆盖了超类的一个方法,子类方法中声明的已检查异常(未检查异常可以不再声明)不能超过超类方法中声明的异常范围(也就是说,子类方法中抛出的异常范围更小,或者根本不抛出任何异常(此时为捕获了超类抛出的所有已检查异常))。
3. 如果超类方法中没有抛出任何已检查异常,子类也不能抛出任何已检查异常。
4. Java 编译器严格的执行throws说明符。如果调用了一个抛出已检查异常的方法,就必须对它进行处理,或者将它传递出去。
三、捕获异常
关键字:try, catch, finally
四、总结
- 异常有两种形式:检验异常和非检验异常;
- 检验异常包括Exception的所有子类型,但不包括扩展RuntimeException的类;
- 检验异常遵守处理或声明它的规则,任何可能抛出检验异常的方法(包括调用能够抛出检验异常方法的方法),都必须使用throws关键字声明异常,或者用适当的try/catch处理异常;
- Error或RuntimeException的子类型是非检验异常,因此,编译器不强迫要求处理或声明规则。你可以随意声明或处理它们,编译器对此并不关心;
- 如果使用可选的finally块,则始终会调用它,不管在相应的try内是否有异常抛出,也不管抛出的异常是否被捕获;
- “始终调用finally”这一规则的唯一例外是:如果JVM关闭,则不会调用finally块。如果从try或catch块调用System.exit(),则会发生这种情况;
- 调用finally并不意味着它必然完成。finally块内的代码本身能够引发异常或者触发方法System.exit();
- 未捕获的异常通过调用栈向后传播,它从抛出该异常的方法开始,到具有该异常类型相应catch的第一个方法为止,或者到JVM关闭为止[如果该异常到达main(),并且main()声明它“躲避”该异常时,则JVM会关闭];
- 可以创建自己的异常,通常通过扩展Exception或其子类型之一创建。这些异常将被看作检验异常,编译器将对这些异常强制执行处理或声明规则;
- 所有的catch块都必须按照从最具体到最通用的顺序排列。如果对于IOException和Exception有一个catch子句,则必须把针对IOException的catch放在代码的前面。否则,IOException将被catch(Exception e)捕获,因为catch参数能够捕获这一特定的异常或其任何子类型!编译器将禁止定义从来不能到达的catch子句;
- 有些异常是由程序员创建的,有些则是由JVM创建的。
发表评论
-
基础数据结构——图
2010-09-20 15:49 875图(Graph)G由两个 ... -
基础数据结构——树
2010-09-20 15:48 790树:T={K,R}。K是包含n个结点的有穷集合(n ... -
基础数据结构——栈和队列
2010-09-20 15:40 743所谓的栈,是一个含有至少两个基本操作的抽象数据类型 ... -
基本数据结构——数组和链表
2010-09-20 15:38 1179数组的这个可 ... -
集合框架——Map
2010-09-20 15:28 781Map集合为映射 ... -
集合框架——Set
2010-09-20 15:19 821Set集合为集类型,集是最简单的一种集合,存放于集 ... -
集合框架——List
2010-09-20 15:16 1140List集合为列表类型,列表的主要特征是存放其中的 ... -
集合框架——Collection
2010-09-20 15:12 665Collection接口是List接口和Set接口 ... -
Object
2010-09-20 12:09 786java.lang.Object类是所有Java类的最高层次 ... -
Java的7个基础问题
2010-09-20 12:08 545问题一:我声明了什么! Java代码 ... -
堆和栈的区别
2010-09-20 12:06 614栈与堆都是Java用来在Ram中存放数据的地方。 与C++不同 ... -
Comparable和Comparator
2010-09-20 09:22 506public interface Comparable&l ... -
如何使用异常的原则(转)
2010-09-17 15:00 443作者:Bill Venners著,chenkw 译 摘要 ... -
异常的捕获与抛出原则(转)
2010-09-17 14:58 686在可能会出现exception的 ... -
J2EE系统异常的处理准则(转)
2010-09-17 11:43 610J2EE系统异常的处理准则 ... -
J2EE项目的异常处理(转)
2010-09-17 11:18 522为什么要在J2EE项目中谈 ... -
集合框架——简介
2010-09-16 14:46 728一、初识: 集合类是 Java基础技术中十分 ... -
内部类详解
2010-09-16 13:11 635内部类详解 1、定义 ... -
优化JVM参数提高eclipse运行速度(转)
2010-09-16 12:59 573性能优化从身边做起。 首先建立评估体系,将workspac ... -
四个有害的java编码习惯
2010-09-15 19:16 588John O'Hanley 的这篇文章列举了四个有害的java ...
相关推荐
之前一直对MCU中的“异常”和“中断”这两个概念有点模糊,最近终于在这本书中找到了答案,欣喜之余,也把它记录了下来,同时本着share的思想,也开放给广大博友,共同进步。
第一篇:JAVA 基础那点破事!反射、泛型、IO模型、重载、非阻塞 第二篇:JAVA 集合那点破事!集合、扩容、数组、链表 第三篇:JAVA 并发!JUC、死锁、CAS、线程池 第四篇:JVM 那点破事!内存结构、垃圾收集、OOM、...
电网线损,线损资料,线损论文--同期那点事,10kV配电线路线损异常排查标准化流程,优秀论文,电力行业,线损分析必备。
在线烧录,顾名思义,直接在电路板上对芯片进行烧录,不依赖于烧录座,不受...每个产品的电路板各种各样,存在很多不确定因素,会给在线烧录带来异常情况。笔者把近期遇到的几种典型的情况,逐个解析,找到问题关键点。
软件页面功能测试点小结软件测试关键字:Web测试功能测试项目接近尾声了,现在似乎有点闲,随便找点事来做吧。在前人的基础下,结合自己的实践总结下功能测试的测试点。一、显示问题1、页面无乱码现象:在可以输入中...
博客《Maven 项目打包需要注意到的那点事儿》可以告诉你解决这些问题的办法。 有没有一个示例?有,本资源就是。 本资源是为博客《Maven 项目打包需要注意到的那点事儿》示例项目,博客地址:...
python网络爬虫 ...1.Resquests库入门 1.get()方法:r=requests.get(url) ... r.text --url对应的页面内容 ... r.apparent_encoding --从内容中分析出的响应内容编码方式(备选编码方式) ...2.Requests的异常 reques
假设三维空间中有一系列点,这些点分布在一个过原点的斜面上,如果你用自然坐标系x,y,z这三个轴来表示这组数据的话,需要使用三个维度,而事实上,这些点的分布仅仅是在一个二维的平面上,那么,问题出在哪里?...
最近在整理优化.net代码时,发现几个很不友好的处理现象:登录判断、权限认证、日志记录、异常处理等通用操作,在项目中的action中到处都是。在代码优化上,这一点是很重要着力点。这时.net中的过滤器、拦截器...
Quartz.Net是一个定时任务框架,可以实现异常灵活的定时任务,开发人员只要编写少量的代码就可以实现“每隔1小时执行”、“每天22点执行”、“每月18日的下午执行8次”等各种定时任务。 Quartz.Net中的概念:计划者...
36_嘿嘿,这回把互感器的那些事搞明白啦! 37_电力系统失灵及死区保护 38_讲透了断路器失灵保护及远方跳闸 39_拨云见日, 断路器控制回路详解 40_电压二次回路运维要求与故障处理 41_变压器停、送电操作步骤与注意...
项目强化,至少与知识点的比例是五五开,所以必须针对简历中的两个以上的项目,形成包括【架构和实现细节】,【正常流程和异常流程的处理】,【难点+坑+复盘优化】三位一体的组合拳 压力练习,面试的时候难免紧张,...
内容关键词: 数据类型, 控制流, 函数, 类与对象, 模块, 异常处理, 文件操作, 并发编程, 异步编程, 代码格式化, 文档字符串, 类型注解, 单元测试, 版本控制 用途: 适用于初学者至中级开发者的技能提升...
237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...
根据挖掘⽬标和数据形式可以建⽴分类与预测、聚类分析、关联规则、事需模型和偏差检测等模型 【⽅法】 分类与预测 聚类分析 关联规则 时序模型 离群点检测 6、模型评估 【⽬的】在多个模型中找出⼀个最好的模型 根据...
以精小完整的工程记录遇到的事, 学到的经, 收集点滴 此项是坚持, 初有萌芽, 接而立项, 后有执行, 过程曲折, 枯燥乏味, 需心静不变的坚持 此项是态度, 不畏事小, 不厌反复, 没有坚持不会有果 特性 通用三模块: ...
使用Bonferroni校正的事后检验显示,入院患者在3个月至6个月的时间之间的平均TCHOL浓度存在统计学差异(209±67 mg / dl对174±34 mg / dl对176±36 mg / dl) ),分别为p = 0.005和p = 0.042。 但是,在3个月和6...
提供基于spring-cloud系列整合的依赖jar包,比如分布式锁,接口文档,多数据源,单点登录,第三方集成等等可spring-boot配置的,简单化的使用工具。 本着一个学习的态度,可以是实现自己的一个想法,对我来说这是一...
目前油井工作状态参数监控由于缺乏远程手段,对油井的生产状况均处于事后处理状态,油井出现异常或被盗破坏时不能及时处理,造成大量不明损失。基于CD-MA通迅信道的远程终端(Remote Terminal Unit,RTU)充分利用现有...
如果中间内容对你有所帮助,可以帮我在 上点个 star ^v^ 目录 一、Let's Encrypt 证书自动颁发脚本 二、工具 三、Docker知识 一次构建多平台docker镜像 RedHat 开源企业镜像项目 Quay Docker 必修课程 Dockerfile ...