第四章 异常处理
 
时间: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. 测试开发Python培训:实现屌丝的图片收藏愿望(小插曲)

    测试开发Python培训:实现屌丝的图片收藏愿望(小插曲) 男学员在学习python的自动化过程中对于爬虫很感兴趣,有些学员就想能收藏一些图片,供自己欣赏.作为讲师只能是满足愿望,帮助大家实现对美的追 ...

  2. 测试开发技术:DOM中 innerHTML、innerText、outerHTML、outerText的区别

    测试开发技术:DOM中 innerHTML.innerText.outerHTML.outerText的区别   我们在做web自动化的过程中通过dom处理web页面元素,那么你就要了解innerHT ...

  3. Mongodb Geo2d索引原理

    作者:孔德雨 MongoDB的geo索引是其一大特色,本文从原理层面讲述geo索引中的2d索引的实现. 2d 索引的创建与使用 通过 db.coll.createIndex({"lag&qu ...

  4. jQuery基础学习(一)—jQuery初识

    一.jQuery概述 1.jQuery的优点      jQuery是一个优秀的JavaScript库,极大地简化了遍历HTML文档.操作DOM.处理事件.执行动画和开发Ajax的操作.它有以下几点优 ...

  5. OpenCV畸变校正原理以及损失有效像素原理分析

    上一篇博客简要介绍了一下常用的张正友标定法的流程,其中获取了摄像机的内参矩阵K,和畸变系数D. 1.在普通相机cv模型中,畸变系数主要有下面几个:(k1; k2; p1; p2[; k3[; k4; ...

  6. MySQL最常用字符串函数

    字符串函数 是最常用的的一种函数,在一个具体应用中通常会综合几个甚至几类函数来实现相应的应用: 1.LOWER(column|str):将字符串参数值转换为全小写字母后返回 mysql> sel ...

  7. js错误问题 The operation is insecure.

    问题: 当我使用canvas的ctx.getImageData 方法时,js报错,错误是 The operation is insecure. 解决: 我使用ctx.getImageData获取can ...

  8. 热爱H5

    我不去想是否能够功成名就既然选择了前端便只顾埋头于无声 我不去想能否赢得掌声既然钟情于IT就勇敢得踏步前行 我不去想前行的路上会不会日暮穷途既然目标是未来留给现在的只能是汗水 我不去想所谓的成功是不是 ...

  9. 【NIO】Java NIO之选择器

    一.前言 前面已经学习了缓冲和通道,接着学习选择器. 二.选择器 2.1 选择器基础 选择器管理一个被注册的通道集合的信息和它们的就绪状态,通道和选择器一起被注册,并且选择器可更新通道的就绪状态,也可 ...

  10. final修饰的变量是引用不能变还是对象的内容不能变?

    int a=1;此时a是变量: StringBuffer a=new StringBuffer();此时a就是引用变量,可以说是a引用String对象,通过a来操作String 对象 final St ...