第四章 异常处理
 
时间:2017年4月26日11:16:39~2017年4月26日11:28:58
章节:04章_01节 04章_02节
视频长度:20:46+01:16
内容:异常的概念
心得:
Java异常是JAVA提供的用于处理程序中错误的一种机制
实在运行的过程中发生的一些异常事件(比如除0溢出,数组越界,要读取的文件不存在)
设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果
 
JAVA程序的执行过程中 如果出现异常事件,可以生成异常类的对象,该异常对象封装了异常事件的信息并被提交给JAVA运行时的系统,这个过程称为抛出(throw)异常
 
当JAVA运行时系统受到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一个过程称为捕获(catch)异常。
 

 
时间:2017年4月26日11:29:02~2017年4月26日11:32:52
章节:04章_03
视频长度:19:47
内容:异常的分类
心得:
Throwable -->Error , Exception 
Error -->难以处理的称为error
Exception-->RuntimeException 与 其他的Exception
runtimeException 经常出的异常 可以不捕获
另外的exception 必须要被捕获(一般经常throws的)
例如IOEXCEPTION 之类的
图片
 

 
 
时间:2017年4月26日11:33:03~2017年4月26日14:38:31
章节:04章_05
视频长度:S9:29
内容:finally语句
心得:
try{
//可能出现异常的代码
}
后面可以跟着一个或者多个catch
每个catch代码段声明能处理的一种特定类型的异常并提供处理的方法

 
 
finally 的语句始终会执行
 
对这句话的情况作了一个简单的测试
 
分别测试了当堆内存溢出,栈内存溢出与system.exit()语句 还有各种return的情况finally的执行情况
 
第一种堆溢出

 
先打印异常 再输出finally语句
 
第二种 栈溢出

 
先输出finally语句 再打印异常
 
以上两种情况是这样的
try{
通过不断的往堆或者栈里面加东西 使得内存溢出
}finally{
system.out.println("..........")
}
 
然后如果作一个小小的改变
try{
通过不断的往堆或者栈里面加东西 使得内存溢出
}finally{
再往内存里加一个语句
system.out.println("..........")
}
 

也不输出了 
但是实际上还是进入了finally 只是强行关闭了虚拟机
 
第三种 System.exit(0)或者-1
不进入finally语句
 
第四种 关于return
try里面有return finally没有的话是这样
debug跑到return语句之后 先执行return 
接着 进入finally 
最后 返回return结果 
也就是说 
finally模块语句的位置是在 执行return之后 返回return之前
 
如果finally里面有return的话是 直接覆盖掉try或者catch里面的return 语句
 
因此得出结论:
1不终止JVM的情况下,finally中的代码一定会执行。
2.finally模块语句的位置是在 执行return之后 返回return之前
 
如果finally里面有return的话是 直接覆盖掉try或者catch里面的return 语句
 
 
时间:2017年4月26日14:38:31~2017年4月26日14:50:05
章节:04章_06
视频长度:12:57
内容:声明方法抛出的异常
心得:
throws 异常
抛出异常的方法 调用的话 可以继续抛
但是到最后一步必须要捕获(不是runtimeException)
 
当然可以在main方法里抛 但是非常不建议。。
最终还是要捕获的
要不然出了错都不知道怎么回事
能处理的就处理 不能处理往外抛
 

 
 
时间:2017年4月26日14:50:37~2017年4月26日15:07:38
章节:04章_07
视频长度:12:01 +1:28
内容:异常的其他问题
心得:
多次catch的时候
遵循先catch小异常 再catch大异常
否则编译无法通过(因为已经捕捉到了)
并列的就没有这种限制
 
关于自定义异常
1.通过继承Exception类声明自己的异常类
2.在方法适当的位置 生成自定义异常的实例,并用throw语句抛出
3.在方法的声明部分用throws语句声明该方法可能抛出的异常
 

 
注意: 重写方法需要抛出与所抛出异常类型一致或不抛出异常
 
总结5个关键字 try catch finally throw throws

Java基础知识二次学习--第四章 异常的更多相关文章

  1. Java基础知识二次学习--第三章 面向对象

    第三章 面向对象   时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...

  2. Java基础知识二次学习--第六章 常用类

    第六章 常用类   时间:2017年4月26日16:14:49~2017年4月26日16:56:02 章节:06章_01节~06章_06节 视频长度:20:57+1:15+8:44+1:26+11:2 ...

  3. Java基础知识二次学习--第七章 容器

    第七章 容器   时间:2017年4月27日15:08:30 章节:07章01节~07章04节 视频长度:20:21 +12:38 +3:55 +2:57 内容:容器API 心得: Java API ...

  4. Java基础知识二次学习--第五章 数组

    第五章 数组 时间:2017年4月26日15:11:30~2017年4月26日15:15:54 章节:05章_01节  视频长度:09:30 内容:一维数组的内存分析 心得: Java中数组是引用类型 ...

  5. Java基础知识二次学习-- 第一章 java基础

    基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一 ...

  6. Java基础知识二次学习--第八章 流

    第八章 流   时间:2017年4月28日11:03:07~2017年4月28日11:41:54 章节:08章_01节 视频长度:21:15 内容:IO初步 心得: 所有的流在java.io包里面 定 ...

  7. Java基础知识二次学习-- 第二章 基础语法与递归补充

    第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下 ...

  8. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

  9. java基础知识(二)

    java的布局管理: borderLayout:则将板块分为东西南北中五个方向,每添加一个组件就要指定组件摆放的方位,放置在东西南北四个方向的组件将贴边放置.当拉大Frame的时候,处在center( ...

随机推荐

  1. 老李分享:QTP的录制原理以及实现

    老李分享:QTP的录制原理以及实现   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9088 ...

  2. Servlet(一)基础总结

    一.Servlet概述 1.Java Servlet是基于Java的一种技术和标准,是独立于平台和协议,服务器端的java应用程序.与Applet相比.Applet运行在客户端,而Servlet运行在 ...

  3. ios 添加工程依赖只能生成Generic Xcode Archive 文件原因

    问题说明:工程引用了外部类库, 默认生成的archive是 Generic Xcode Archive 格式的 无法发布和生成ipa文件. 解决处理: 1.将Build Settings->De ...

  4. Latex 公式在线可视化编辑器

    寻觅 最近的一个demo需要用到Latex公式在线编辑器,从搜索引擎一般会得到类似http://latex.codecogs.com/eqneditor/editor.php的结果,这个编辑器的问题在 ...

  5. JS实现banner图轮换

    方法一: <!--灰色背景代码替换图片--> <!DOCTYPE html><html> <head> <meta charset="U ...

  6. PROFINET如何实现实时性

    平时我们都听过文艺作品要“源于生活而高于生活”.PROFINET是基于工业以太网的,用文艺范儿的词汇说就是“源于以太网而高于以太网”.那么,PROFINET是怎么做到“高于以太网”的呢? 要做到比普通 ...

  7. Hive 的简单使用及调优参考文档

    Hive 的简单使用及调优参考文档   HIVE的使用 命令行界面 使用一下命令查看hive的命令行页面, hive --help --service cli 简化命令为hive –h 会输出下面的这 ...

  8. mySql 安装教程

    看了好久别人的文章,今天就开始自己写第一篇.希望给别人能提供帮助,也可以方便自己查阅. 前两天自己安装了mysql,感觉是比oracle好装多了. mysql安装有两种方式,一种是安装包安装方式,一种 ...

  9. 迁移 SQL Server 到 Azure SQL 实战

    最近有个维护的项目需要把 SQL Server 2012 的数据库迁移到 Azure SQL 上去.主要是因为租用的主机到期,而运营商停止了主机租赁业务,看来向云端的迁移是大势所趋啊!经过一番折腾最终 ...

  10. Kafka协议兼容性改进

    在Kafka 0.10.2.0之前,Kafka服务器端和客户端版本之间的兼容性是"单向"的,即高版本的broker可以处理低版本client的请求.反过来,低版本的broker不能 ...