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异常机制简述的更多相关文章

  1. 全面理解java异常机制

    在理想状态下,程序会按照我们预想的步骤一步一步的执行,但是即使你是大V,你也不可避免出错,所以java为我们提供了异常机制.本文将会从以下几个方面介绍java中的异常机制: 异常机制的层次结构 异常的 ...

  2. Java 异常机制

    Java 异常机制 什么是异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程 为什么要有异常 什么出错了 哪里出错了 ...

  3. 【55】java异常机制剖析

    一.为什么要使用异常 首先我们可以明确一点就是异常的处理机制可以确保我们程序的健壮性,提高系统可用率.虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位,作用.有异常就说明程序存在问题,有助于我们 ...

  4. Java异常机制及异常处理建议

    1.Java异常机制 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通过API中Throwable类的众多子类 ...

  5. [Java学习笔记] Java异常机制(也许是全网最独特视角)

    Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...

  6. Java异常机制

    Java异常分类 异常表明程序运行发生了意外,导致正常流程发生错误,例如数学上的除0,打开一个文件但此文件实际不存在,用户输入非法的参数等.在C语言中我们处理这类事件一般是将其与代码正常的流程放在一起 ...

  7. Java异常机制简介

    什么是异常? 异常一般是指程序在编译期没有问题,但是在程序运行期出现的错误,一个程序会因为出现异常而终止运行,也就是我们常说的挂掉,在多线程下,异常只会影响所在的线程,对其他线程没有影响. Java异 ...

  8. Java基础 -- 深入理解Java异常机制

    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...

  9. 一张图搞清楚Java异常机制

    下面是Java异常类的组织结构,红色区域的异常类表示是程序需要显示捕捉或者抛出的. Throwable Throwable是Java异常的顶级类,所有的异常都继承于这个类. Error,Excepti ...

随机推荐

  1. 内连接INNER JOIN(三十四)

    内连接INNER JOIN 一.连接 MySQL的SELECT语句.多表更新.多表删除语句中支持JOIN操作. 语法结构 二.数据表参照 table_reference tbl_name [[AS] ...

  2. Servlet doPost方法同时上传图片和传递参数

    上传图片和传递参数 上传图片和文件属于enctype="multipart/form-data"  form中加入enctype="multipart/form-data ...

  3. 我比xx强在哪里?弱在哪里?

    向下管理? 向上管理? 自我形象? 人机关系运作? 弱项不在管理方面: 在向上的人际关系处理和机会把握方面.

  4. CMDB学习之八,完成所有资产采集信息的收集

    #!/usr/bin/env python # -*- coding:utf-8 -*- import traceback from .base import BasePlugin from lib. ...

  5. 利用gradle加入构建版本

    在java的程序中,貌似都没有这个构建版本的概念.用的诸如eclipse. idea和android studio的IDE也没有直接提供构建版本的选项.只是我却想在android程序的版本其中加入一个 ...

  6. cocos2d-x 3.2 之 2048 —— 第一篇

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  7. Apache Spark 1.6公布(新特性介绍)

    Apache Spark 1.6公布 CSDN大数据 | 2016-01-06 17:34 今天我们很高兴可以公布Apache Spark 1.6,通过该版本号,Spark在社区开发中达到一个重要的里 ...

  8. Python 数据结构与算法 —— 哈弗曼树

    1. 从扩充二叉树到哈弗曼树 扩充二叉树:对二叉树 T,加入足够多的新叶节点(而不是任意),使 T 的原有结点都变成度数为 2 的分支节点,得到的二叉树称为 T 的扩充二叉树. 对于扩充二叉树而言, ...

  9. 关于ajax访问express服务器的跨域问题

    在学习es6的时候用promise封装了一个ajax <script type="text/javascript"> function getNews(URL) { l ...

  10. Active Data Guard

    ADG INTRODUCE Active Data Guard(ADG)是ORACLE 11g企业版的新特性,需要单独的License.可以打开Physical standby至read only模式 ...