概要解析:

本章的知识点能够记为:1图+5keyword+先逮小的、后逮大的

 一、基础

(一)定义

1、异常

是指在程序执行的时候发生的一些异常事件。良好的程序设计应该在异常发生的时候提供处理异常的方法,使得程序不会由于异常的发生而中断。因此Java提供的用于处理程序中错误的一种机制。

2、抛出异常throw

java程序的执行过程中如出现异常事件,能够生成一个异常类对象(封装了异常事件的信息),被提交给java执行时系统。

简单理解为:推卸责任。马路上遇到了交通事故,不须要自己处理,而是拨打110,等待交警的处理。

3、捕获异常catch

当java执行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理

简单理解为:承担责任。廊坊市警察局,接到报警电话以后,确定出现交通事故的区域来自于安次区,因此通知安次区的交警出动。

二、分类

(一)Error错误

系统错误,不能被处理。由Java虚拟机生成并抛出,包含动态链接失败,虚拟机错误等,程序对其不做处理。

(二)Exception全部异常类的父类

其子类相应了各种各样可能出现的异常事件,一般须要用户显示的声明或捕获。

1、Runtime Exception

    执行时错误,能够处理也能够不处理。由系统自己主动检測并将它们交给缺省的异常处理程序。如被0除,数组下标超范围等,其产生比較频繁,处理麻烦,假设显式的声明或捕获将会对程序可读性和执行效率影响非常大。

2、非RuntimeException

仅仅要不是执行时错误,必须手动处理的。

三、异常的捕获和处理

(一)5个keyword

1、try语句

  • try{}语句指定了一段代码,该代码就是一次捕获并处理异常的范围。
  • 在运行过程中,该段代码可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常做对应的处理。
  • 假设没有例外产生,全部的catch代码段都被略过不运行

    简单解析为:廊坊市依照街道对职权进行划分,假设安次区发生了交通事故,那么本区域的交警就出动;假设安次区有人须要急救,那么负责本区域的120就出动;假设是邻居之间出现了不和谐的关系,那么居委会大妈就出动

2、catch语句

在catch语句块中是对异常进行处理的代码,每一个try语句块能够伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。

    简单理解为:相同都是安次区,可能会出现各种各样的麻烦事,堵车了则交警出动;有人犯罪则本区域的刑警出动;街坊邻居吵架则居委会出动。相同都是这个区域,依据出现的问题的种类不同,则负责处理事情的人也会有所不同。

3、finally语句

    • finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其它部分曾经,可以对程序的状态作统一的管理。
    • 不管try所指定的程序块中是否抛出异常,finally所指定的代码都要被运行。
    • 通常在finally语句中可以进行资源的清除工作,如:关闭打开的文件,删除暂时文件等

简单理解为:不管过程中出现了什么问题,反正终于结果都是:和平处理。绝不错杀一个好人,也不放过一个坏人。

(二)先逮小的、后逮大的

异常的处理过程是:先捕捉并处理小的错误,后捕捉并处理大的错误。Exception的权利是最大的。

简单理解为:遇到问题后,首先要内部调解,调解不同的话,能够选择地方政府打官司,然后地方政府说“我们职权范围内,没办法处理这事情,你向省地政府上诉吧!”……一直到问题被解决为止。

(三)自己定义的异常

过程例如以下:

    • 通过继承java.lang.Exception类声明自己的异常类
    • 在方法适当的位置生成自己定义异常的实例,并用throw语句抛出
    • 在方法的声明部分用throws语句声明该方法可能抛出的异常。

 注意: 重写方法须要抛出与原方法所抛出异常类型一致异常,或者不抛出异常。

四、实例


import java.io.*;

class MyException entends Exception{
private int id;
public MyException(String message,int id){
super(message);
this.id=id;
}
public int getId(){
return id;
}
} public class Test{
public void regist(int num) throws MyException{
if(num<0){
throw new MyException("人数为负值,不合理!",3);
}
System.out.println("登记人数"+num);
}
public void manager(){
try {
regist(100);
} catch (MyException e) {
System.out.println(“登记失败,出错类型码=”+e.getId());
e.printStackTrace();
}
System.out.print("操作结束");
}
public static void main(String[] args){
Test t=new Test();
t.manager;
}
}

五、总结

“异常”这一章的知识点能够概括为:一个图、五个keyword、先逮小的后逮大的。

映射到人生即是:生活中并非一帆风顺,因此路途的过程中会遇到这样活那样的困难/挫折,家庭问题就要找本区的居委会来调解;假设是道路交通问题,拨打110,等待分配来的警察来处理;假设是路人病发,就要拨打120……由于人并非万能的,不可以把全部的事情料理的一帆风顺,因此我们须要别人的帮助。有问题,仅仅须要“help”一声抛出,就会有专人来救助。假设别人解决不了的话,就继续向上抛出直到问题处理完为止。

“异常”,有问题就“抛”,会有专人解决的,不要让自己太累哦O(∩_∩)O~

一大波Java来袭(二)异常处理的更多相关文章

  1. 一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照

    本文主要介绍String类.StringBuffer类.StringBuilder类的差别  : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作 ...

  2. 万网知您所需,“域”众不同--.link/.love/.help等一大波新顶级域来袭!

    万网在新顶级域市场再次发力,一大波域名界的小鲜肉新鲜上线,价格优惠,限时低至9元起,更有丰富的可注册资源. 一下,即刻世界,用记录生活,用观看世界, 用和做最好的! 新上线的个性化新顶级域价格如下: ...

  3. Java Socket常见异常处理 和 网络编程需要注意的问题

    在java网络编程Socket通信中,通常会遇到以下异常情况: 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发 ...

  4. java 中的异常处理

    一. 异常的概念和Java异常体系结构  异常是程序运行过程中出现的错误.本文主要讲授的是Java语言的异常处理.Java语言的异常处理框架,     是Java语言健壮性的一个重要体现. Java把 ...

  5. java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类

    package cn.kecheng; import java.util.Scanner; /**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序 异常处理机制:java中 ...

  6. Java程序设计11——异常处理

    1 概述 异常机制已经成为判断一门编程语言是否成熟的标准,除了传统的像C语言没有提供异常机制之外,目前主流的编程语言如Java.Ruby.Python都提供了成熟的异常机制.异常机制可以使程序中异常处 ...

  7. Java面试题总结之Java基础(二)

    Java面试题总结之Java基础(二) 1.写clone()方法时,通常都有一行代码,是什么? 答:super.clone(),他负责产生正确大小的空间,并逐位复制. 2.GC 是什么? 为什么要有G ...

  8. Java实现二叉搜索树

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11406176.html 尝试一下用Java实现二叉搜索树/二叉查找树,记录自己的学习历程. 1 ...

  9. Java中的异常处理机制的简单原理和应用?

    程序运行过程中可能出现各种"非预期"情况,这些非预期情况可能导致程序非正常结束. 为了提高程序的健壮性,Java提供了异常处理机制: try { s1... s2... s3... ...

随机推荐

  1. AppStore 审核中文版 --- 程序员必看

    App Store审核指南中文版(2014.10.11更新) 2014-11-03 程序猿 苹果在9月3日对App Store审核指南进行了重大更新,新添加了扩展.HealthKit.HomeKit以 ...

  2. 8月1日起,这些新政将影响移动互联网产业-b

    今天,国家互联网信息办公室发布<移动互联网应用程序信息服务管理规定>.这项规定将从8月1日起生效,其中侧重对两类玩家提出了监管意见,他们分别是: 移动互联网应用程序提供者,即提供信息服务的 ...

  3. 实现一个JavaScript模块化加载器

    对任何程序,都存在一个规模的问题,起初我们使用函数来组织不同的模块,但是随着应用规模的不断变大,简单的重构函数并不能顺利的解决问题.尤其对JavaScript程序而言,模块化有助于解决我们在前端开发中 ...

  4. 广州麒麟网络工作室 qlgame eninge(anroid) opengles c++ matrix

    在opengles中,采用的是可编程渲染管线,矩阵需要自己实现! 先说一下矩阵的理论: 参考一下资料:http://blog.sina.com.cn/s/blog_6084f588010192ug.h ...

  5. Mongodb数据更新命令

    一.Mongodb数据更新命令 Mongodb更新有两个命令:update.save. 1.1update命令 update命令格式: db.collection.update(criteria,ob ...

  6. Python模块subprocess小记

    转自:http://www.oschina.net/question/234345_52660 熟悉了Qt的QProcess以后,再回头来看python的subprocess总算不觉得像以前那么恐怖了 ...

  7. 【BZOJ 3110】 [Zjoi2013]K大数查询(整体二分)

    [题目] Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到 ...

  8. [wikioi]能量项链

    http://wikioi.com/problem/1154/ 这是石子归并的加强版,基本就是分治法的DP.但是有了个环,因为任何一个位置都可开始,所以就建立2*N的数组,然后对可能的区间遍历一次,就 ...

  9. Android调用MediaScanner进行新产生的媒体文件扫描

    有时候,我们拍了一张图片或录制了一段视频,图库应用默认没有将这些新产生的文件识别出来所以打开图库或视频播放器发现没有找到这些文件,需要调用MediaScanner扫描一下才会出来.从FFMPEG中找了 ...

  10. 匿名hash

    [root@oadb test]# cat a1.pl use Data::Dumper; my @a=qw/1 3 5 7 9/; push @b ,{@a}; print Dumper(@b); ...