Java日志第15天 2020.7.20

第八章 程序的异常

8.1 异常声明,捕获和处理

异常是组织方法继续执行的问题,可能导致程序失败或出现程序崩溃。

8.1.1 异常机制概述

编译错误:编写的程序存在语法问题,未能通过编译

运行错误:在程序运行过程中产生的错误

1.什么是异常

程序运行过程中遇到的非致命的,通过某种修正后还能执行的错误成为异常。

2.产生异常的几种情况

(1)虚拟机检测到的异常

*表达式的计算违反了Java的语义。

*超出了某些资源限制,如使用了太多内存。

(2)Java程序代码中的throw语句被执行

(3)异步异常发生

*Thread的stop方法被调用

*Java虚拟机内部错误发生

3.异常处理的关键字

Java异常处理通过5个关键字来管理,它们是try、catch、throw、throws、finally。

Java中的异常类有一个父类叫做Throwable,有两个子类为Error、Exception。

(1)Error异常

Error指的是错误,通常不可以通过代码来解决。在程序中用户不用那个捕获Error及任何Error子类的异常。

Error包括linkageError(综合错误)与VitualmachineError(虚拟机错误)两个子类

(2)Exception异常

Exception类型的异常有分为运行时异常和非运行时异常。

*运行时异常

继承自RuntimeException

Java编译器允许程序不做处理

*非运行时异常

在java.lang类库中定义

Java编译器要求程序必须捕获或声明抛弃这种异常。

 

8.1.2 在Java中如何进行异常处理

1.Try...catch...finally

捕获命名为属于异常类的异常,并调用方法处理它。其中的finally无论有无异常都会执行。

try{  //监视

  可能发生一张的代码块;

}

catch(异常类型 异常对象名){ //捕获并处理异常

  异常处理代码块;

}finally{

  //最终执行

}

 

 

 

 当finally带return语句时:

 

 

 

 *因为finally语句总是执行,所以结果会是10,如果将finally中的return去掉,结果就会是5。

 

*finally语句可以省略

*catch语句可以有多个,并且如果用户要捕获Exception,则将Exception放在最后,不能放在前面,否则会报错。(如果要捕获异常,异常范围要按照从小到大顺序叠放)

示例:catch多个异常

 

 一个try代码块可以嵌入到另一个try代码块中。如果内部try代码块产生的异常没有被内部try代码块相关的catch捕获,就会传到外部try代码块。

示例:try语句嵌入多个try语句

 

 2.使用throws抛出异常

throws子句方法的基本形式如下:

[修饰符] 返回类型 方法名 (参数1, 参数2, ...) throws 异常列表()

 

 

throws子句可以同时指明多个异常,说明该方法将不对这些异常进行处理,而是声明抛弃它们。

 

 3.通过throw抛出异常

throw抛弃的异常必须是Throwable或其子类的实例,其基本形式如下:

throw 异常名

throw关键字主要是用在try块中,用来说明已经发生的异常情况。throw关键字后面跟随一个异常对象,用来说明发出的异常类型。

 

 4.自定义异常

 

 

 

哇哇哇!!这些东西真的是看不懂了啊,第六章、第八章真的好难,明天看视频,看这本书真的是看不懂了。

posted @ 2020-07-20 21:08  Gazikel  阅读(103)  评论(0编辑  收藏  举报