JAVA异常机制简述
1.类的继承结构
在JAVA所有的异常对象都是Throwable类的一个子类的实例


Exception包含两个分支,由于程序错误导致的异常属于RuntimeException,比如数组下标越界,空指针等。非程序本身问题的异常属于其他异常,譬如IO引起的异常。
派生自Error类或RuntimeException类的所有异常都属于为检查异常,而其他所有的异常都属于已检查异常,我们只需要为已经常异常指定异常处理器即可,换句话说,原则上,我们只需要为已检查异常编写catch语句。
2.方法异常的声明
方法在其首部应该声明所有可能抛出的异常
String readData(Scanner in)throw EOFException
{
//...
}
3.异常的抛出
String readData(Scanner in)throw EOFException
{
while(){
if(){
throw new EOFException();
}
}
}
4.方法的捕获
如果A方法调用了声明了抛出异常的B方法,那么在A方法中要么处理这个异常,要么继续将这个异常抛出。
try{
//...
}
catch(FileNotFoundException e)
{
//...
}
catch(IOException e){
//...
}
finally
{
file.close();
}
5.finally子句已经带资源的try语句
在上面代码中,我们使用了finally子句来进行文件关闭的操作,这在实际开发过程中是比较常见的需求,由于无论try语句块中是否出现异常,finally子句中的语句都会被执行,所以在finally子句进行文件关闭、流关闭以及数据库关闭等操作是一个比较好的选择,避免了try语句块内外编写重复的代码。
此外,另一种较好的选择是使用带资源的try语句,由于带资源的try会在退出(无论正常退出还是异常发生)时,自动调用res.close(),所以我们在不编写finally语句的情况下依然可以进行文件关闭等操作。
try(Scanner in = new Scanner(new FileInputStrem("/usr/tmp/test"))){
while(in.hasNext())
System.out.println(in.next());
}
JAVA异常机制简述的更多相关文章
- 全面理解java异常机制
在理想状态下,程序会按照我们预想的步骤一步一步的执行,但是即使你是大V,你也不可避免出错,所以java为我们提供了异常机制.本文将会从以下几个方面介绍java中的异常机制: 异常机制的层次结构 异常的 ...
- Java 异常机制
Java 异常机制 什么是异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程 为什么要有异常 什么出错了 哪里出错了 ...
- 【55】java异常机制剖析
一.为什么要使用异常 首先我们可以明确一点就是异常的处理机制可以确保我们程序的健壮性,提高系统可用率.虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位,作用.有异常就说明程序存在问题,有助于我们 ...
- Java异常机制及异常处理建议
1.Java异常机制 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通过API中Throwable类的众多子类 ...
- [Java学习笔记] Java异常机制(也许是全网最独特视角)
Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...
- Java异常机制
Java异常分类 异常表明程序运行发生了意外,导致正常流程发生错误,例如数学上的除0,打开一个文件但此文件实际不存在,用户输入非法的参数等.在C语言中我们处理这类事件一般是将其与代码正常的流程放在一起 ...
- Java异常机制简介
什么是异常? 异常一般是指程序在编译期没有问题,但是在程序运行期出现的错误,一个程序会因为出现异常而终止运行,也就是我们常说的挂掉,在多线程下,异常只会影响所在的线程,对其他线程没有影响. Java异 ...
- Java基础 -- 深入理解Java异常机制
异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...
- 一张图搞清楚Java异常机制
下面是Java异常类的组织结构,红色区域的异常类表示是程序需要显示捕捉或者抛出的. Throwable Throwable是Java异常的顶级类,所有的异常都继承于这个类. Error,Excepti ...
随机推荐
- 78.Nodejs基础中间件Connect
转自:https://www.cnblogs.com/chris-oil/p/5625437.html 前言 “中间件”在软件领域是一个非常广的概念,除操作系统的软件都可以称为中间件,比如,消息中间件 ...
- Entity Framework之Model First开发方式
一.Model First开发方式 在项目一开始,就没用数据库时,可以借助EF设计模型,然后根据模型同步完成数据库中表的创建,这就是Model First开发方式.总结一点就是,现有模型再有表. 二. ...
- 2015上海网络赛 HDU 5478 Can you find it 数学
HDU 5478 Can you find it 题意略. 思路:先求出n = 1 时候满足条件的(a,b), 最多只有20W对,然后对每一对进行循环节判断即可 #include <iostre ...
- Chromium Graphics : GPU Accelerated Compositing in Chrome
GPU Accelerated Compositing in Chrome Tom Wiltzius, Vangelis Kokkevis & the Chrome Graphics team ...
- UINavigationController导航栏按钮设置
UINavigationController常见属性 1.一般情况下,导航栏上面显示什么内容,由当前栈顶控制器的navigationItem属性决定 * navigationItem.title : ...
- H+后台主题UI框架---整理
本篇文章是对H+这种框架进行整理,顺便了解一下标准的代码规范的写法. 一.表单: 1).下面是一个基本表单: 现在来看这个表单的结构: 1.整个表单的外框结构是一个div,至于padding和marg ...
- WEB开发中一些常见的攻击方式及简单的防御方法
WEB开发中一些常见的攻击方式及简单的防御方法 转载:http://blog.csdn.net/seven__________7/article/details/70896913
- Onvif开发之代码框架生成篇
看了前一篇的ONVIF的简单介绍应该对它的基本使用都有了一些基本的了解了吧!下面我讲一步分解向大家介绍下如何通过gsoap生成需要的代码,以及代码中需要注意的问题[基于Linux平台 C开发] 生成O ...
- Looksery Cup 2015
A题水 C题 博弈论,如果不是CF有WA具体哪个点错了和数据的话,AC要难许多. 如果D的操作数大于奇数个数直接Win 偶数个数大于等于n – k 时,S直接Win 偶数个数小于n – k时,若D操作 ...
- Exercise: PCA in 2D
Step 0: Load data The starter code contains code to load 45 2D data points. When plotted using the s ...