[Java]异常知识点v.01

异常概述

1.Java异常是一种错误捕捉机制处理方式
如果由于出现错误程序应该是 返回一种安全状态,执行用户的其他的程序,允许用户保存所有的操作结果.异常处理的任务就是将控制权从错误产生的地方转移给能够处理这种情况的错误处理器中。

2.异常的分类
Java中的异常都是派生与一个Throwable类中,所有的异常都是这个类继承而来
Throwable立马分解为Error与Exception这两个分支

2.1 相比于Exception,Error类中分为Virtual MachineError, NoClassDefFoundError,
outOfMemoryError,StackOverflowError,一般是JVM出现的问题,我们不应该实现任何Error的子类。Error类描述的是Java运行时系统的内部错误与资源的耗尽错误,程序不应该抛出这种类型的对象。更多需要关注的是Exception的结构。我们不写异常处理的方式(声明,抛出)系统也会自动的捕获异常 此类的问题就是程序本身的逻辑,代码本身的问题。

2.2Exception是程序可以捕捉的异常,有两种分支,IOException与RutimeException
IOException是一种程序本身没有问题,但是由于其他问题错误引起的的异常
RuntimeException是一种JVM运行期间可能会出现的问题 如错误的类型转换 访问空指针 数组访问越界等。此类的问题我们可以通过声明thorws抛出或try-catch进行捕获处理。不处理不能通过编译 我们是使用系统提供的异常类处理此类异常(编译期异常),必须手动处理.

3.受查异常与非受查异常

派生于RuntimeException类的异常称为非受查异常
所有其他的异常称为受查异常

受查异常:编译器要求必须处理的异常 必须使用声明或抛出处理
非受查异常不受我们处理的异常

异常处理方式

1.声明异常
Java方法中可以抛出一个异常 告诉编译器有可能发生什么错误
应该是知道如何处理异常 将不知道如何处理的异常继续传递下
可以在方法的后边使用 throws关键字 加上可能会出现的异常

声明一个异常之后 必须抛出或者捕获

2.抛出异常
如果这个异常解决不了 并且不需要处理 这时候你可以抛出异常
throw抛出异常 可以如throw new EOFException()
throw关键字就是在方法内部抛出一个Throwable类型的异常 任何Java代码都可以通过throw语句抛出异常 不需要处理的

3.捕获异常
程序中运行不报错 运行之后会存在某些错误 可以使用try -catch形式进行异常捕获 不同的异常情况进行相应的处理.
try{ code }
catch(ExceptionType e){ 处理此异常 }

捕获多个异常
try{ code }
catch(ExceptionType1 e1){ 处理此异常方式1 }
catch(ExceptionType2 e2){ 处理此异常方式2 }
catch(ExceptionType3 e3){ 处理此异常方式3 }

如果捕获之后的异常不能处理掉可以在catch中继续抛出异常
try{ code }
catch(ExceptionType e){ throw new ExceptionType }

当抛出一个异常时 就会终止方法中的剩余代码处理 并退出这个方法的执行
想要在解决异常之后再处理一个代码
使用try{ code }
catch(ExceptionType e){ 处理此异常 }
finally{无论异常是否被捕获到 此代码块中的代码都被执行 }
通常是处理一些 资源的回收

常见的异常处理方式

1.直接抛出异常
传递异常在方法中throws声明可能会抛出的异常
2.捕获多个异常之后对不同异常处理再抛出
try-catch()之后处理得到的异常类型,对不同的异常类型进行处理
或者可以转化为其他异常之后再抛出。
3.自定义异常
必须继承Exception 或 RuntimeException
这两个的区别就是给谁处理的区别
自定义异常的基本 是有一个空参数的构造方法 和一个带参数的构造方法
4.try-catch-finally
当方法中发生异常之后 异常之后的代码不会被执行
之后会进入catch代码块 之后进入finally代码块 如果没有发生异常的话 会直接跳过catch代码块
直接执行finally代码块 finally代码块就是无论try-catch是否发生异常 之后都会执行
如果catch存在return的话 finally依然会被执行在return之前执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值