1.为什么要有异常处理机制?
来避免一些小问题的出现而影响整个系统的运行
2.如何避免?
整理问题,进行分析,分类,进行相应的处理---作出对应处理办法--编写对应的类--编写功能处理对应问题
3.Java提供了哪些类?
类:Throwable 包:java.lang
含义:是所有的错误和异常的基类,白话文:Java中所有问题处理类的起源
类的使用:
普通的类,提供的构造方法和普通处理业务的方法
其直接子类:
错误:Error
不应该尝试去处理的严重问题,必须解决程序才能运行
有很多的子类--分别描述不同的具体问题
异常:Exception
应该尝试着获取问题,进行相应处理,不影响整个程序运行
--可以通过业务避免很多的子类--分别描述不同的具体问题
4.Java代码中发生的问题探索
Error:写错代码,内存溢出等等,很严重,必须纠正为正确代码,程序才能运行
需要做到:当控制台打印出现java.lang.XXXXError的时候,代码编写有问题,必须找到修改完,程序才能运行
Exception:异常--程序执行的时候有可能会发生问题【重点】
一般是数据和语法错误,除数为零,数据类型不符合等等
对于异常的出现,在我们传入正确数据的前提下,程序是可以正常运行的
他是我们可以在使用的过程中编写一些算法避免
5.提供了帮助我们简化处理异常的方法
Error:只能修改代码,没办法处理
Exception:可以处理,程序执行过程中偶然出现的,检测到他的出现,然后去做些事情去避免
Java中如何处理:
提供了一套处理业务代码块
1) try{
可能出现异常的代码块
2) }catch(出现的异常对象){
出现异常的解决方法
3)}finally{
不管出不出现异常,都要补一些补救的事情
}
使用方式:
InputMismatchException
ArithmeticException
try{}:主要的功能就是将可能出现异常的代码块圈起来,进行监测
catch(异常类类型 对象名){}:当try检测到异常发生的时候,虚拟机就会创建对应异常类对象
交给catch根据类型捕获,将异常对象作为参数自动传入,我们就可以获取异常原来信息,调
用异常对象的方法,进行业务处理
自定在catch块中,自定义业务功能
没有发生异常--代码执行过程:
直接按照代码顺序执行,不执行catch块
异常发生后-代码执行过程:
当try块中检测到异常发生---catch直接捕获异常--执行catch块内容【异常处理】--继续向下代码执行
finally{}:放在异常处理组合最后面,不管发不发生异常,都会执行,关闭之前开启的流通到数据
try catch finally的组合
try()---一个或多个catch
备注:
A.当try检测到一个异常发生,try中的代码块执行到此结束,直接跳转到对应catch块执行
执行完程序往下继续走
B.可以添加一个Exception对象的块,用于检测所有的异常对象
必须放到最后的catch块中,不能放前面
C.catch块的执行先后顺序的:从上往下
异常对象范围
父类>子类
一个try----一个或者多个catch块---一个finally块 没有异常正常执行业务,有了异常就捕获操作
最终用finally进行通道关闭
一个try---一个finally块 不管有没有异常都不处理,一定要关闭通道,主要目的释放资源