第四章 异常处理
 
时间: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. Selenium测试专项三班隆重开班

    Selenium测试专项三班隆重开班 应广大测试技术人员要求,以及企业技术需求.Selenium提前一周开课了,只针对合作的每家企业提供1-2个参训名额.预计培训60人次.但报名人数却远远超出我们预期 ...

  2. ArcGIS API for JavaScript 4.2学习笔记[20] 使用参数查询要素(油井和地震关系)

    这个例子相当复杂.我先简单说说这个例子是干啥的. 在UI上,提供了一个下拉框.两个滑动杆,以确定三个参数,使用这三个参数进行空间查询.这个例子就颇带空间查询的意思了. 这个例子是干嘛的呢?第一个参数是 ...

  3. WPF中的RichTextBox

    原文链接:http://blog.csdn.net/wuzhengqing1/article/details/7010902 取出richTextBox里面的内容 第一种方法:将richTextBox ...

  4. 使用Docker分分钟启动常用应用

    前言 Docker是目前比较火的一个概念,同时也是微服务中比较关键的一个容器化技术.但是,单从理论上好难看出Docker的优势,因此,我希望在这篇文章中提供一些Docker的使用示例,希望从实际应用上 ...

  5. Android -- Annotation(注解)原理详解及常见框架应用

    1,我们在上一篇讲到了EventBus源码及3.0版本的简单使用,知道了我们3.0版本是使用注解方式标记事件响应方法的,这里我们就有一个疑问了,为什么在一个方法加上类似于"@Subscrib ...

  6. redis 链表

    redis 链表 前言 借鉴了 黄健宏 的 <<Redis 设计与实现>> 一书, 对 redis 源码进行学习 欢迎大家给予意见, 互相沟通学习 概述 redis 的链表结构 ...

  7. Oracle空间查询 ORA-28595

    可使用数据库管理系统 (DBMS) 的结构化查询语言 (SQL).数据类型和表格式来处理地理数据库或安装了 ST_Geometry 类型的数据库中所存储的信息. 例如,在ArcMap中我们使用&quo ...

  8. stl_alloc.h分配器

    五.分配器:5.1.头文件: 5.1.1.include<stl_alloc.h> //内存的分配. 5.1.2.include<stl_construct.h> //对象的构 ...

  9. <CentOS7>如何设置hostname

    在CentOS/RHEL 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置: ceph@client-node ~]$ hostnamectlstatus Stat ...

  10. MySQL安装、输入密码闪退、workbench使用

    1.安装 安装就不细说了,网上一搜一大堆,但是教程推荐这个: wikihow 网站是wikiHOW,很有意思的网站,比百度经验强大很多. 2.输入密码闪退 安装完成后,在开始菜单,打开 开始程序 界面 ...