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

java

第四章 异常处理

 

时间: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基础知识二次学习--第四章 异常 的全部内容, 来源链接: utcz.com/z/393513.html

回到顶部