java异常

p629-异常概述

1.什么是异常:程序执行过程中的不正常情况。异常的作用:增强程序的健壮性。

2.程序执行控制台出现了:
在这里插入图片描述
这个信息被我们称为:异常信息。
这个信息是JVM打印的

p630-java中异常以类和对象的形式存在

1.异常在java中以类的形式存在,每一个异常类都可以创建异常对象。
在这里插入图片描述
在这里插入图片描述
2.异常在现实生活中
在这里插入图片描述

p635-异常的继承结构

在这里插入图片描述
·不管是错误还是异常都是可抛出的
·所有的错误只要发生,java程序只有一个结果就是终止程序的执行。退出JVM,错误是不能处理的。

在这里插入图片描述

Exception分为两类
在这里插入图片描述
·所有Exception的直接子类,都叫做**编译时异常。**必须在编写程序时预先对这种异常进行处理,如果不处理编译器报错。

·所有的RuntimeException及子类都属于运行时异常。运行时异常在编写程序阶段可以处理也可以不处理。

在这里插入图片描述

p636-编译时异常和运行时异常的区别

1.编译时异常一般发生的概率比较高。
在这里插入图片描述
对于一些发生概率较高的异常,需要在运行之前对其进行预处理。

运行时异常一般发生的概率比较低。
在这里插入图片描述
对于一些发生概率较低的异常,没必要在运行之前对其进行预处理。

--------------------------------------------在这里插入图片描述

2.编译时异常又被称为受检异常,还有叫做受控异常。运行时异常又被称为非受控异常和未受检异常。

3.⭐️所有异常都是发生在运行阶段
因为运行时才会创建异常对象,只是编译行异常需要在编译时进行预处理。

p638-异常处理的两种方式

1.第一种方式:在方法声明的位置上,使用throws关键字,抛给上一级,谁调用我,我就抛给谁。
第二种方式:使用try…catch语句进行异常的捕捉,这件事发生谁也不知道,因为我给抓住了。

在这里插入图片描述

2.Java中异常发生之后,如果我选择了上抛,抛给了我的调用者,调用者需要对这个异常继续处理,这个调用者同样有两种处理方式。
如果一直上抛,最终抛给了main方法,main方法继续向上抛,抛给了调用者JVM,JVM知道这个异常发生,只有一个结果就是 终止Java程序的执行。

p-390运行时异常编写可以不处理

在这里插入图片描述
AirthmeticException 继承RuntimeException,属于运行时异常。在编写阶段不需要对这种异常进行预先的处理。

p640-方法声明位置上使用throws

在这里插入图片描述
在这里插入图片描述

p641-异常处理的原理

第一种

在这里插入图片描述

第二种

在这里插入图片描述

p642-异常捕捉和上报的联合使用

在这里插入图片描述
一般main方法不建议使用第一种方法
在这里插入图片描述

ps:在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:编译时异常一定要选择一种方法解决,上抛的话就要一直上抛直到main方法建议使用捕捉;用捕捉就不要一直上抱了;算数类异常属于运行时异常,在编译时可以选择处理或者不处理,编译器不管;

p643-哪里的代码执行哪里的代码不执行

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

注:只要异常没有没有捕捉,采用上报的方式,此方法的后续代码不会被执行;
另外,try语句块中的某一行出现异常,该行后面的代码不会被执行。try…catch捕捉异常后,后续代码可以执行;

p644-try catch深入

1.catch后面的小括号中的类型可以是具体的异常类型,也可以是该异常类型的父类型。
2.catch可以写多个。建议catch时精确处理,有利于程序的调试
3.catch写多个的时候,从上到下必须遵守从小到大。

在这里插入图片描述
在这里插入图片描述


1.在这里插入图片描述
在这里插入图片描述
catch后面的小括号可以写准确类型,也可以写父类型


在这里插入图片描述


3.catch写多个的时候,从上到下必须遵守从小到大。
在这里插入图片描述

p645-java8新特性

在这里插入图片描述

p646-上报和捕捉怎么选择

希望调用者来处理采用throws上报。
其余采用捕捉。

在这里插入图片描述
·空指针异常是运行时异常编译时可以不管。
·FileNotFoundException需要处理。

p647-异常对象的常用方法

在这里插入图片描述


在这里插入图片描述

=======================
在这里插入图片描述

===============================

如何查看异常信息可以快速调试程序

1.异常信息从上往下一行一行看,但是sun公司的不用看(上面的异常是由于下面的错误导致的)
在这里插入图片描述
(看包名就知道是自己的还是sun的,sun:java.io.······ ; 自己写的:)

  1. 在这里插入图片描述
    这行代码要写上,要不然出现问题也不知道

或者获取异常的简单描述信息
在这里插入图片描述

======-=-=-=-=-=-=-=
在这里插入图片描述
一般使用 e.printStackTrace();

p-649 finally子句

1、在finally子句中的代码是最后执行的,并且是一定会执行的,即使try语句块中的代码出现了异常。
finally子句必须和try一起出现,不能单独编写。

2、finally语句通常的使用情况:
通常在finally语句块中完成资源的释放/关闭。(因为finally语句块比较有保障)

p-650

1、try和finally可以联合使用,没有catch也可以。
(try不能单独使用)
在这里插入图片描述
(先执行try,再执行finally,最后再结束)
在这里插入图片描述

-=-=-=-=-=-=-=-=-=-=-=-=-=
在这里插入图片描述

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

p-651 退出JVMfinally语句不执行

退出JVM后,finally语句不执行
在这里插入图片描述
(try执行,但是finally不执行)

p-652 finally的面试题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

p-653 final finally finalize 的区别

final 关键字
final修饰的类无法继承
final修饰的方法无法覆盖
final修饰的变量不能重新赋值

finally 关键字
和try一起联合使用
finally语句块中的代码是必须执行的

finalize 标识符
是一个Object类中的方法名
这个方法是由垃圾回收器GC负责调用的

在这里插入图片描述

p- 654 java中如何自定义异常

第一步:编写一个类继承Exception或者RuntimeException
第二步:提供两个提供两个构造方法,一个是无参数的,一个是带有String参数的。

在这里插入图片描述

p-655 异常在实际开发中的应用

p-656 异常与方法覆盖

重写之后的方法不能比重写之前即父类的方法抛出更多(更宽泛)的异常,可以更少。

总结异常中的关键字

异常捕捉:
try
catch
finally

throws:在方法声明的位置使用,表示上报异常信息给调用者。

throw:手动抛出异常。

p-657 异常作业

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值