Java基础知识二次学习--第四章 异常

时间:2022-01-03 08:39:53
第四章 异常处理
 
时间: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)异常。
 
Java基础知识二次学习--第四章 异常
 
时间: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 之类的
图片
 Java基础知识二次学习--第四章 异常
 
 
时间:2017年4月26日11:33:03~2017年4月26日14:38:31
章节:04章_05
视频长度:S9:29
内容:finally语句
心得:
try{
//可能出现异常的代码
}
后面可以跟着一个或者多个catch
每个catch代码段声明能处理的一种特定类型的异常并提供处理的方法
Java基础知识二次学习--第四章 异常
 
 
finally 的语句始终会执行
 
对这句话的情况作了一个简单的测试
 
分别测试了当堆内存溢出,栈内存溢出与system.exit()语句 还有各种return的情况finally的执行情况
 
第一种堆溢出
Java基础知识二次学习--第四章 异常
 
先打印异常 再输出finally语句
 
第二种 栈溢出
Java基础知识二次学习--第四章 异常
 
先输出finally语句 再打印异常
 
以上两种情况是这样的
try{
通过不断的往堆或者栈里面加东西 使得内存溢出
}finally{
system.out.println("..........")
}
 
然后如果作一个小小的改变
try{
通过不断的往堆或者栈里面加东西 使得内存溢出
}finally{
再往内存里加一个语句
system.out.println("..........")
}
 
Java基础知识二次学习--第四章 异常
也不输出了 
但是实际上还是进入了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方法里抛 但是非常不建议。。
最终还是要捕获的
要不然出了错都不知道怎么回事
能处理的就处理 不能处理往外抛
 
Java基础知识二次学习--第四章 异常
 
 
时间: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语句声明该方法可能抛出的异常
 
Java基础知识二次学习--第四章 异常
Java基础知识二次学习--第四章 异常
 
注意: 重写方法需要抛出与所抛出异常类型一致或不抛出异常
 
总结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. virtualbox安装增强功能(centos6.5)

    vitualbox安装增强功能(centos 6.5) 1. 安装依赖包 #yum install kernel-headers-$(uname -r) #yum install kernel-dev ...

  2. python dict.get()和dict['key']的区别

    先看代码: In [1]: a = {'name': 'wang'} In [2]: a.get('age') In [3]: a['age'] --------------------------- ...

  3. jquery 上传图片即时预览功能

    <script type="text/javascript">        jQuery.fn.extend({            uploadPreview: ...

  4. 打印多边形的菱形(for的嵌套)

    Console.WriteLine("请输入一个数字,会出现一个多边的菱形:"); int n = Convert.ToInt32(Console.ReadLine()); ; i ...

  5. &num;&num;&num;STL学习--适配器

    点击查看Evernote原文. #@author: gr #@date: 2014-08-24 #@email: forgerui@gmail.com STL中的适配器. ###stl学习 |--迭代 ...

  6. storyboard ID

    The storyboard ID is a String field that you can use to create a new ViewController based on that st ...

  7. Light OJ 1037 - Agent 47(预处理状态压缩DP)

    题目大意: 有个特工要执行任务,他会遭遇到最多15个目标,特工必须把他们全部杀死.当他杀死一个目标后他可以使用目标的武器来杀死其他人.因此他必须有一个杀人的顺序,使得他开枪的次数最小. 现在给你一个表 ...

  8. PLSQL 导入表到Oracle------》从一个表空间导入到其它表空间

        在用PLSQL导入.dmp文件到Oracle时出现的问题如下: Import started on 2015/11/18 10:42:44E:\oracle\product\10.2.0\db ...

  9. html5 文件系统File API

    前言: 在做浏览器上传图片的时候,一般采用form表单上传,这种上传无法预览图片,无法查看图片大小,无法知道图片的类型等等!那么在html5 File API提供了这些表单无法实现的功能,而且还支持拖 ...

  10. 如何大幅提升web前端性能之看tengine在大公司架构实践

    在一个项目还是单体架构的时候,所有的js,css,image都会在一个web网站上,看起来并没有什么问题,比如下面这样: 但是当web网站流量起来的时候,这个单体架构必须要进行横向扩展,而在原来的架构 ...