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 ...
随机推荐
- 25.Detours劫持技术
Detours可以用来实现劫持,他是微软亚洲研究院开发出来的工具,要实现它首先需要安装Detours. 安装地址链接:https://pan.baidu.com/s/1eTolVZs 密码:uy8x ...
- LDAP实现企业异构平台的统一认证
LDAP实现企业异构平台的统一认证 技术是为应用服务的,没有应用,技术就无用武之地.同样光配置完LDAP服务器没有任何意义,只有把所有需要认证的环节,只有纳入LDAP系统中,才能使它发挥应有 ...
- 使用java自带的xml解析器解析xml
使用java自带的xml解析器解析xml,其实我不推荐,可以用Dom解析,或其他的方式,因为Java自带的解析器使用不但麻烦,且还有bug出现. 它要求,针对不同的xml(结构不同),必须写对应的ha ...
- JS实现PC端全兼容复制
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Swift学习笔记(15)--下标脚本(Subscripts)
下标脚本可以定义在类(Class).结构体(structure)和枚举(enumeration)这些目标中,使用中类似数组或者字典的用法 1.定义 定义下标脚本使用subscript关键字,语法: s ...
- 洛谷 P1591 阶乘数码
P1591 阶乘数码 题目描述 求n!中某个数码出现的次数. 输入输出格式 输入格式: 第一行为t(≤10),表示数据组数.接下来t行,每行一个正整数n(≤1000)和数码a. 输出格式: 对于每组数 ...
- Struts2的token标签
“token标签的实现原理是在表单中增加一个隐藏域,每次加载该页面时,该隐藏域的值都不相同.而TokenInterceptor拦截器则拦截所有用户请求,如果两次请求时该token对应隐藏域的值相同(前 ...
- 菜鸟之路——Java并发(二)ThreadLocal
一.什么是ThreadLocal ThreadLocal,非常多地方叫做线程本地变量,也有些地方叫做线程本地存储.事实上意思几乎相同.非常多博客都这样说:ThreadLocal为解决多线程程序 ...
- MySQL架构组成之逻辑模块组成
MySQL 能够看成是二层架构 第一层SQL Layer.包含权限推断.sql 解析.运行计划优化,query cache 的处理等等. 第二层存储引擎层(Storage Engine Lay ...
- 【Oracle】使用bbed恢复delete的数据
表中的数据被delete之后并不会真正删除数据,而是打了一个删除标记,仅仅要还没有被覆盖就能够恢复回来. 实验步骤例如以下: SYS@ORCL>create table bbed_test(x ...