Java公开课-04.异常
一,异常的概念
程序在运行时,发生了我们没有预测的结果,它阻止了程序按照我们预期效果执行
二,怎么保证我们的程序在发生异常以后 ,代码继续执行?
异常处理机制
在程序发生异常以后,还能按照我们事先设定好的逻辑,继续执行后续代码!
三,异常的分类和结构图
1.所有异常和错误的父类--Throwable
Throwable类是Java异常类型的顶层父类,一个对象只有是Throwable类(直接或间接的)实例,它才是一个异常对象。才能被异常处理机制识别,JDK中内建了一些常用的异常类,我们也可以自定义异常
2.根据编译器对异常的处理要求,异常分俩类
2.1运行时异常(RuntimeException):在程序运行期间产生的异常!
2.2受查异常(checked Excep):在程序编译期产生的异常!
3 Throwable
3.1 Error //这个错,靠异常处理机制处理不了,一般是代码问题造成的堆栈爆炸等
3.2 Exception
3.2.1 受查异常
3.2.1.1 IOException
3.2.1.2 EOFException
3.2.1.3 ClassNotFoundException
3.2.1.4 FileNotFoundException
3.2.2 RuntimeException
3.2.2.1 ArithmeticException
3.2.2.2 InputMismatchException
3.2.2.3 NullPointException
四,异常处理方式(一):try-catch-finally
1.try的使用
001.try代码块不能单独使用,必须和catch或finally中的一个一起使用
002.可能发生异常的代码
003.如果我们try代码块中不发生异常,有finally的情况下,先执行finally,之后执行finally之后的代码块
如果我们try代码块发生异常,先去catch中匹配异常,如果匹配成功,执行对应的catch,否则执行finally,然后程序终止
2.catch的使用
001.每一个catch代码块都是用于捕获并处理一个特定的异常或者是这个异常的子类!
002.catch(ArithmeticException ex) 定义了异常类型
003.可以同时出现多个,但不能重复
004.多个catch代码块中异常类型书写顺序,必须是 从小到大
005.我们会从多个catch代码块中找到一个最先匹配的,然后交给这个代码块处理
006.每个代码块中的变量是独立的,别的代码块不能访问
007.如果每个代码块都不匹配。先去执行fianlly,之后终止程序
008.如果try中没有发生异常,则所有catch块被忽略
009.jdk1.7的版本中支持多个异常声明在一个catch块中
3.finally的使用
001.无论发生什么,fially都会执行
002.如果try中没有异常,但是有return,这时候会先执行finally之后执行return
003.如果代码中出现System.exit(int status)那么不会执行finally
System.exit(0); 正常退出
System.exit(非0); 非正常退出
004.做一些程序的清理工作,关闭流,释放数据库的连接等
五,异常处理方式(二):throw-throws
1.throw
01.抛出的异常类型可以是Exception或者其子类
02.一条throw语句只能抛出一个异常对象
03.throw只能出现在方法体内
04.对于throw抛出的异常我们有俩种处理方式
001.try。。。catch。。。finally
002.throws
2.throws
01.throws声明在方法的名称之后
02.throws可以声明多个 ,每个异常异常之间用逗号隔开
03.throws可以声明异常,表示当前方法可以出现异常,房法的调用者来处理异常
04.如果在主函数中使用throws,则由我们的jvm处理
六,异常链
用处:例子:连环汽车追尾,如何头车找到尾车
异常链是指将捕获的异常包装进一个新的异常中,新异常中 记录原始异常的信息,并重新抛出异常的处理方式
七,自定义异常
创建继承Exception的类,或继承Exception的子类的类
重写构造,写单个带String,还有带String和异常对象的那个构造
八。异常的使用原则
1.异常只能用于非正常情况
2.为异常提供说明文档
3.尽可能避免异常,特别是运行异常
4.保持异常的原子性
5.避免过于庞大的try代码块
6.在catch块中指定具体的异常类型
7.不要在catch块中忽略捕获的异常
Java公开课-04.异常的更多相关文章
- 学习经验分享(最近听了一节Java公开课)
最近听了一节Java公开课,讲的Tomcat8.0的,老师分享的学习方法很好, 时间和精力要用对地方 1.学习一个知识的广度和深度,先学主要的主流的,不要学了很多不该学,没必要学的东西 2.要花时间总 ...
- Java公开课-05.log4j
log4j 一,log4j简介 1.如果程序中出现异常,我们怎么解决? 01.使用异常处理机制===>异常 (但是使用原则是,能不用异常处理机制,最好不用,怎么办?) 02.通过debug调试 ...
- Java公开课-01.类和对象
一,类和对象的含义 1.类:类是具有相同属性(静态特征)和行为(功能 )的一系列事物的集合. eg:以下俩者是不是类 1)汽车 √ 2)小胖桌子上那个红色的杯子 × 2.对象:被精确限定到一个特殊 ...
- Java公开课-06.单例
一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必须创建 ...
- Java公开课-03.内部类
一.内部类的作用 1.实现了类的隐藏 2.实现了多重继承 3.内部类拥有外部类所拥有的属性和方法的访问权限 4.避免修改接口的时候出现同名方法 二.内部类--成员内部类 1.如果我们想访问内部类,我们 ...
- Java公开课-02.抽象类和接口
在讲述抽象类和接口之前,扯点别的:封装,继承,多态,我只做个简单的涉略 一,封装 1.体现: 将变量和方法放到一个类中 私有字段封装成共有属性 2.this: 如果发现成员变量的名称和方法参数的名称相 ...
- 【公开课】【阿里在线技术峰会】魏鹏:基于Java容器的多应用部署技术实践
对于公开课,可能目前用不上这些,但是往往能在以后想解决方案的时候帮助到我.以下是阿里对公开课的整理 摘要: 在首届阿里巴巴在线峰会上,阿里巴巴中间件技术部专家魏鹏为大家带来了题为<基于Java容 ...
- 《开源公开课分享》:Java开源框架案例分享
缺乏高端技术人才?缺乏开发标准? 代码复用性低?技术风险难于把控? 招聘成本高?培训成本高? 假设想法不够雄伟,那么就会局限于细节:假设一開始就铺很大的摊子,将会失去控制: ...
- 手把手教你用python打造网易公开课视频下载软件4-图形化界面
上一篇讲解完函数:def getdownLoadInfo (url): 传入公开课的url地址,就可以提取课程的信息,这一篇讲解一下如何编写图像化界面.大概思考一下图像化界面需要的内容: (1)一个标 ...
随机推荐
- 任务管理器中的PID找不到
PID是Process ID的简称,这对WINDOWS开发人员来说是非常有用的信息,但对于普通用户来说则根本不必去理会. 举个例子来说: 在网站发布的时候,需要安装IIS,那么iis的tcp的80 ...
- linux内核算法---hex_to_bin分享
这是我从内核抠出来的一段代码,用处就是传入一个字符,即可以用printf语句%d以十进制数的格式输出,同时也可以以%p地址的形式输出. 代码如下: #include <stdio.h> # ...
- 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目
分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经 ...
- Android使用统计图AChartEngine 来展示数据
本文采用的统计图参考:AChartEngine 访问地址 :http://code.google.com/p/achartengine/ 先给出效果图 本文的开发代码主要是这些:对一些代码进行修改 以 ...
- Select、Poll与Epoll比较
(1)select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志 ...
- SharePoint 解决方案手动打包简单介绍
介绍:在使用SharePoint中,我们经常需要做的就是打包解决方案,我们来介绍下SharePoint解决方案的手动部署,我自己觉得,解决方案是SharePoint中非常好的一个功能,部署和使用起来相 ...
- 快速熟悉Oracle索引
一.索引 1.1 什么是索引? 一种用于提升查询效率的数据库对象: 通过快速定位数据的方法,减少磁盘的输入输出操作: 索引信息与表独立存放: Oracle数据库自动使用和维护索引. 1.2 索引分类 ...
- javascript访问html元素的内容(1)
形如如下格式的html元素: <p id="my_p">I'm <strong>BIG</strong> panda!!!</p> ...
- Mac OS X 10.10优胜美地如何完美接管iphone上的电话和短信
自从今年苹果第一次的发布会上毛猫就特别注意这个功能,感觉特别Cool,特别方便.但直到今天毛猫才第一次成功测试出这个功能呀!虽然handoff功能还未测出来,但是觉得在mac上发短信和打电话也已经足够 ...
- ORM框架--GreenDao 3.0基本使用指南
0. ORM框架--GreenDao 3.0基本使用指南 1. Gradle 的配置 这里可以参照官方的文档进行最新的配置(本示例的版本等你看到可能就不是最新的了),但是值得注意的一点是,GreenD ...