异常

【异常 Exception】

概念

表示程序运行时发生的可能会导致程序异常中断的错误

 

【异常的分类】

 

 Throwable:表示java程序运行过程中发生的一切不正常事件

 

Error 错误:JVM内部发生的严重错误,一旦发生,程序不可能回到正常指令流程

如 java.lang.StackOverflowError 栈溢出

   java.lang.OutOfMemoryError 堆溢出(OOM)

 

Exception 异常:运行时发生的一般错误,经过合适的处理后,还是可以回归正常的指令流程.

所有的runtimeexception类及其子类的实例被称为runtime异常,其余的异常被称为受查异常

 

RuntimeException: 运行时异常,由于程序员逻辑不严谨导致,非受察异常,不强制要求处理

如空指针异常,数组下标越界异常,算数异常,强制类型转换异常

非RuntimeException: 非运行时异常, (checked)受察异常,往往是由于外部偶然因素导致,这类异常编译器强制要求你处理

Checkedexception:  IOException,FileNotFoundException

 

 

 

【异常的处理方式】

 1. 捕获 

1)

try {

// 可能会发生异常的代码

} catch (异常的类型 变量名){

// 对异常的处理

}


2) 

try{


} catch(异常类型1 e){


} catch(异常类型2 e){


} ... catch (Exception e){


}

* 注意:如果有父子关系,要把父类写在后面

 

3)

try{

// 有可能会发生异常的代码块

}catch(){

// 捕获到了异常之后,用来处理异常的代码块

// 不允许出现有异常隐患的代码

}finally{

// 无论有没有发生异常,都会执行的代码块

// 不允许出现有异常隐患的代码

}

4)最常用的

try{



} finally{



}

 2. 抛出

A让B做一件事,但是这件事情有风险,可能会损失100块钱。

如果发生了这个问题,B选择自己掏钱,叫做捕获

如果B自己不掏钱,那么A就要掏出100块钱处理异常,这叫做抛出(B把异常抛给了A)

throw:

抛出一个异常对象(语句)

 

throws:

声明该方法可能会抛出一个异常(声明)

 

如果声明的是抛出非运行时异常,那么调用此方法的地方就必须要处理这个异常

如果声明的是抛出运行时异常,就相当于没写

 

* 注意:声明会抛出异常的方法,有可能会抛出异常

也有可能不抛出异常

【自定义异常】

 往往会把发生不同原因的异常划分为不同的类型,

 在java API中已经有很多异常类型了

 但是有时候还是不足以解决实际开发中遇到的异常

 比如给一个学生设置年龄的时候,设置 -5岁 就显然是一种异常

 

 1. 自定义异常:

自己写一个异常类型,然后继承于Exception或RuntimeException

 

 2. 好处:

给不同原因导致的异常分成不同的类型,便于管理和解决。

 

【总结】

 1. 运行时异常,不允许使用try-catch,在前面加上if判断解决

 2. 非运行时异常,要么捕获,那么抛出

 3. 底层/业务逻辑层的所有异常,全部抛出

 4. 异常的捕捉,如果不太关心具体是什么异常,可以直接使用Exception捕捉即可,而要区别是什么异常,则需要指定具体的异常类来进行捕捉。

 

应用:https://blog.csdn.net/qq_36194262/article/details/82735259

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值